第九章 PL/SQL基础 主讲内容:PL/SQL程序块、常量变量的使 用、条件语句、循环语句等;
第九章 PL/SQL基础 主讲内容:PL/SQL程序块、常量变量的使 用、条件语句、循环语句等;
ORACL∈ 00本节课内容 一.PL/SQL概述 二.P/SQL程序结构 三.异常处理 第3页
本节课内容 一.PL/SQL 概述 二.PL/SQL程序结构 三.异常处理 第 3 页
ORACL∈ 00-.PL/SQL概述 PL/SQL( Procedure Language/SQL)是 Oracle在数据库中引 入的一种过程化编程语言,代表面向过程化的语言与SQL 语言的结 ·PL/SQL构建于SQL之上,它是在SQL语言中扩充了面向过程 语言中使用的程序结构,如: 块结构、变量和类型、条件逻辑、循环 一游标,其中保存着查询返回的结果 过程、函数、包 第4页
一 . PL/SQL 概述 • PL/SQL(P d roce ure L /SQL anguage/SQL)是O l rac e在数据库中引 入的一种过程化编程语言,代表面向过程化的语言与SQL 语言的结合; • PL/SQL构建于SQL之上,它是在SQL语言中扩充了面向过程 语言中使用的程序结构,如: – 块结构、变量和类型、条件逻辑、循环 – 游标,其中保存着查询返回的结果 – 过程、函数、包 第 4 页
ORACL∈ ·例1,假设要在数据库中修改一个学生的记录,如果没有该 学生的记录,则为该学生创建一个新的记录,使用PL/SQL的 程序代码可以实现要求,如 DECLARE /*定义变量类型*/ v sname varchar2(8):=张三’; v newname varchar2(8):=张山’ BEGIN UPDATE student /*更新学生表* SET sname=v newname WHERE sname=v sname: 第5页
• 例1,假设要在数据库中修改一个学生的记录,如果没有该 学生的记录,则为该学生创建一个新的记录,使用PL/SQL的 程序代码可以实现要求,如: DECLARE /*定义变量类型*/ v _ sname varchar2( ) 8 :=‘张三’ ; v_newsname varchar2(8):=‘张山’ ; BEGIN UPDATE student /*更新学生表*/ SET sname= v newsname v _ newsname WHERE sname= v_sname; 第 5 页
ORACL∈ /检查记录是否存在,若不存在就插入记录*/ IF SQL%NOTFOUND THEN INSERT INTO student (sno, sname VALUES(student sequence nextval, v newname END IF: END: 第6页
/*检查记录是否存在,若不存在就插入记录*/ IF SQL%NOTFOUND THEN INSERT INTO student student (sno,sname) VALUES(student_sequence.nextval, v_newsname); END IF; END; / 第 6 页
ORACL∈ 从上例可以看出,PL/SQ是两代语言的结晶,它具有 许多SQL所没有的优点: 一模块化结构 一定义标识符 一用过程化语言控制结构进行程序设计 一错误处理 一提高操作性能 第7页
• 从上例可以看出 从上例可以看出, PL/SQL是两代语言的结晶 是两代语言的结晶,它具有 许多SQL所没有的优点: – 模块化结构 – 定义标识符 – 用过程化语言控制结构进行程序设计 – 错误处理 – 提高操作性能 第 7 页
ORACL∈ 0二.PL/SQL程序结构 一个PL/SQL程序块可划分为三个部分: 申明部分 declarative section) 如变量定义,以关键字 declare开始 执行部分 executable section) 如逻辑处理,当出现关键字 begin表示执行部分开始 异常处理部分( exception section) 关键字 exception表示异常处理部分开始 一其中,只有执行部分是必须的,其他两个部分是可选的 第8页
二 PL/SQL程序结构 • 一个PL/SQL程序块可划分为三个部分: 二. PL/SQL程序结构 / – 申明部分(declarative section) • 如变量定义,以关键字declare开始 – 执行部分(executable section) • 如逻辑处理,当出现关键字begin表示执行部分开始 表示执行部分开始 – 异常处理部分(exception section) • 关键字exception表示异常处理部分开始 – 其中,只有执行部分是必须的,其他两个部分是可选的 。 第 8 页
ORACL∈ 主要包括 DECLARE部分、BEGN.END部分和 EXCEPTION部 分,具体代码结构如下: DECLARE declaration statements; I BEGIN executable statements EXCEPTION exception handling_ statements; I END 第9页
• 主要包括DECLARE部分、BEGIN … END部分和EXCEPTION部 分,具体代码结构如下: [ DECLARE declaration statements _ ; ] BEGIN executable statements executable _ statements ; [ EXCEPTION exception_handling_statements ; ] END ; / 第 9 页
ORACL∈ declare 创建变量、游标及自定义异常 Begin Sq语句或p/sq语句 exception 异常处理代码 End: 图1: PL/SQL程序块结构 第10页
declare 创建变量、游标及自定义异常 Begin Sql语句或pl/sql语句 exception 异常处理代码 End; / 图1:PL/SQL程序块结构 第 10 页
ORACL∈ ●·1、字符集和语法注释 所有的PL/SQL程序都是由语法单元构成的,从实质来说, 一个语法单元就是一个字符序列,字符序列的字符来自 PL/SQL语言的字符集中,PL/SQL字符集包括: 所有大写字母A-Z和小写字母ab 数字09 符号(),+,*/<>,=,八回,",#S,,}?,] 此外,一些制表符空格符回车符也是PL/SQL字符集中 的合法字符。 第11页
1、字符集和语法注释 • 所有的PL/SQL程序都是由语法单元构成的,从实质来说, 一个语法单元就是一个字符序列,字符序列的字符来自 PL/SQL语言的字符集中, PL/SQL字符集包括: – 所有大写字母A‐Z和小写字母a‐b – 数字0‐9 – 符号(,),+,‐,*,/,,=,!,~,^,;,:,.,’,@,”,#,$,_,|,{,},?,[,] – 此外,一些制表符,空格符,回车符也是PL/SQL字符集中 的合法字符。 第 11 页