Oracle数据库讲义(第三章).ppt
《Oracle数据库讲义(第三章).ppt》由会员分享,可在线阅读,更多相关《Oracle数据库讲义(第三章).ppt(35页珍藏版)》请在得力文库 - 分享文档赚钱的网站上搜索。
1、 讲 义Oracle数据库2005.8李明俊第三章 PL/SQL程序设计主要内容主要内容3.1 PL/SQL3.2 PL/SQL块结构 3.3 PL/SQL基本语法3.4 PL/SQL处理流程3.5 异常处理3.6 游标3.7 存储过程和函数3.8 触发器1.简介2.SQL(SQL*PLUS)是工业标准语言,是一种通用性广、效率高、功能强的交互式处理语言,它是非结构化非结构化的,只能单语句运行,不能进行编程。PL/SQL语言在SQL的基础上增加了变量处理、语句的运行控制、意外处理等功能构成了结构化的程序设计语言结构化的程序设计语言,所有SQL的数据类型、函数及功能语句在这里完全兼容,使用于所有
2、Oracle环境中。2.PL/SQL优点有利于客户/服务器环境应用的运行 使用PL/SQL进行编程,将大量数据处理的应用放在服务器端来执 行,省去了数据在网上的传输时间。适合于客户环境 由于PL/SQL分为数据库PL/SQL部分和工具PL/SQL。在客户端中把PL/SQL可以嵌套到相应的工具中,客户端可以执行本地的PL/SQL部分,也可以向服务发SQL命令或激活服务器端的PL/SQL程序运行。3.1 PL/SQL3.PL/SQLPL/SQL中的中的SelectSelect语句语句 在PL/SQL中Select语句与SQL*Pluas不同,查询出来的结果要付给指定的变量当中,因此,在语句中加入I
3、NTO和变量。Select语句格式如下:SELECT ,INTO,FROM,WHERE HAVING GROUP BY ,;从语句格式中也能看到,SelectSelect语句只允许返回一行记录语句只允许返回一行记录,否则会出现TOO_MANY_ROWS错误。【例】读取表T_SPML中商品编码为9650005的商品名称及价格。Select spmc,xsjg into v_spmc,v_xsjg from T_SPML Where spbm=9650005;3.2 PL/SQL块结构PL/SQL程序由三个块组成,即 声明部分、执行部分、异常处理部分。PL/SQL块的结构如下:Declare/*声
4、明部分:在此声明PL/SQL用到的变量,类型及光标*/Begin/*执行部分:过程及SQL语句,即程序的主要部分 */Exception/*执行异常部分:错误处理 */End;其中:执行部分是必须的。Begin End必须嵌套使用。DECLARE、BEGIN、EXCEPTION后没有分号(;),而END后则必须要带有分号。PL/SQL标识符的命名规则:标识符的最大长度是30个字符,包括字母、数字、$、_、#;不可包含保留字;要以字母来打头;不能和同一块中的表中的字段名一样。【例】只包含执行部分的PL/SQL块 begin dbms_output.put_line(Welcome!);end;其
5、中:dbms_output.put_line屏幕输出语句。【例】包含定义部分和执行部分的PL/SQL块 DECLAREDECLARE v_spmc Varchar2Varchar2(20);BEGINBEGIN selectselect spmc INTOINTO v_spmc FROMFROM t_spml WHEREWHERE spbm=&nono;dbms_output.put_line(商品名称:|v_spmc);END END;输入 no 的值:9650005商品名称:喜来达空气芳香剂喜来达空气芳香剂注意:该例中当执行该PL/SQL时,会根据输入的商品编码显示商品的名称。3.3 PL
6、/SQL基本语法3.3.1 常量与变量定义常量的语法格式:常量名 constant 类型标识符 not null:=值;【例】pi constant number(9,7):=3.1415926;定义变量的语法格式变量名 类型标识符 not null:=值;【例】v_age number(3):=26;常量和变量名都必须以字母开头,不能有空格,不能超过30个字符长度,同时不能和保留字同名,常(变)量名称不区分大小写,在字母后面可以带数字或特殊字符。括号内的not null为可选参数,若选用,表明该常(变)量不能为空值。3.3.2 复合数据类型变量使用%type定义变量 为了让PL/SQL中变量
7、的类型和数据表中的字段的数据类型一致,Oracle 9i提供了%type定义方法。这样当数据表的字段类型修改后,PL/SQL程序中相应变量的类型也自动修改。定义字段型变量%type的格式 变量名 表名.列名%type;【例】v_spbm T_spml.spbm%type;使用%rowtype定义变量 在PL/SQL中,支持将多个基本数据类型捆绑在一起的记录数据类型。引用记录型变量的方法是“记录变量名.基本类型变量名”。定义记录型变量%rowtype的格式变量名 表名%type;【例】执行下列PL/SQL程序,程序定义了名为v_spml的复合类型变量,与T_SPML表结构相同。DECLARE v
8、_spml t_spml%rowtype;BEGIN select*into v_spml from t_spml where spbm=&no;dbms_output.put_line(商品名称:|v_spml.spmc);dbms_output.put_line(商品产地:|v_spml.spcd);dbms_output.put_line(供货单位:|v_spml.ghdw);dbms_output.put_line(销售价格:|v_spml.xsjg);END;使用 Table 定义变量(数组)Table也是一种用于处理PL/SQL的数据类型。该数据类型与高级语言数组非常类似,其元素下
9、标必须是整型数,可以是负数,无需指定下标的大小范围,下标可以不连续。定义数组的格式:type type 类型名类型名 is Table of is Table of 元素类型元素类型 Index By Binary_integer Index By Binary_integer;当在PL/SQL块中使用数组变量时,按如下格式指定变量。数组变量名数组变量名 类型名类型名;下标可以使用整型变量。下面举例说明使用Table类型的方法:【例】Declare typetype Table_type isis TableTable OfOf t_spml.spmc%TypeType Index Index
10、 ByBy Binary_IntegerBinary_Integer;v_spmc_type Table_type;begin select spmc into v_spmc_type(1)from t_spml where spbm=&no;dbms_output.put_line(商品名称:|v_spmc_type(1);end;输入 no 的值:9650005商品名称:喜来达空气芳香剂3.4 PL/SQL 处理流程 在PL/SQL程序中,要使程序能按照逻辑进行处理,除了有些语句是SQL语句外,还必须有能进行逻辑控制的语句。PL/SQL 也不例外,它不仅可以嵌入SQL语句,而且还支持条件分
11、支语句(IF,CASE)、循环语句(LOOP)。3.4.1 条件分支语句 格式:IF THEN PL/SQL和SQL语句;ELSE PL/SQL和SQL语句;ELSIF THEN PL/SQL和SQL语句;END IF;【例】判断两个整数变量的大小,输出不同的结果。declareV_num1 integer:=80;V_num2 integer:=90;beginif v_num1=v_num2 then if v_num1=v_num2 then dbms_output.put_line(v_num1等于v_num2);else dbms_output.put_line(v_num1小于v_
12、num2);end if;else dbms_output.put_line(v_num1大于v_num2);end if;end;3.4.2 CASE语句在CASE语句中使用单一选择条件进行等值比较。格式:CASE WHEN THEN 语句1;WHEN THEN 语句2;WHEN THEN 语句n;ELSE 语句n+1;END CASE;【例】DeclareDeclare v_dd CharChar(2);BeginBegin SelectSelect to_char(last_day(SysdateSysdate),dd)IntoInto v_dd FromFrom dual;CaseCa
13、se v_dd WhenWhen 31 ThenThen dbms_output.put_line(大月);WhenWhen 30 ThenThen dbms_output.put_line(小月);ElseElse dbms_output.put_line(二月);EndEnd CaseCase;EndEnd;在CASE语句中使用多种条件比较 格式:CASE WHEN THEN 语句1;WHEN THEN 语句2;WHEN THEN 语句n;ELSE 语句n+1;END CASE;【例】DeclareDeclarev_dd CharChar(2);BeginBeginSelectSelect
14、 to_char(last_day(SysdateSysdate),dd)IntoInto v_dd FromFrom dual;CaseCase WhenWhen v_dd=31 ThenThen dbms_output.put_line(大月);WhenWhen v_dd=30 ThenThen dbms_output.put_line(小月);ElseElse dbms_output.put_line(二月);EndEnd CaseCase;EndEnd;3.4.3 循环语句 类型一类型一 LOOP LOOP循环循环 格式:格式:LOOP LOOP 执行语句;执行语句;:Exit Whe
15、n Exit When;执行语句;执行语句;:End LOOP;End LOOP;执行语句;执行语句;:当使用基本循环时,无论是否满足条件,语句至少会被执行一次。当条件为TURE时,会退出循环,并执行END LOOP后的相应操作。【例】先创建表T_stu,并插入5条数据(2004610120046105)。create table T_stu(xh int);执行插入程序。declarei int:=20048101;beginloop insert into T_stu values(i);exit when i=20048105;i:=i+1;end loop;end;类型二类型二 WHI
16、LE 循环格式:格式:While While =常数常数 LOOP LOOP 执行语句;执行语句;:End LOOP;End LOOP;只有条件为真时,才会执行循环体内的语句。【例】declare i int:=20048101;begin while i=20048105 LOOP insert into T_stu values(i);i:=i+1;end loop;end;类型三类型三 FOR循环 格式:For For REVERSE In In 起点起点.终点终点 LOOP LOOP 执行语句;执行语句;:End LOOP;End LOOP;当使用FOR循环时,每次循环时循环控制变量会
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- Oracle 数据库 讲义 第三
限制150内