数据库第8章数据编程.ppt
《数据库第8章数据编程.ppt》由会员分享,可在线阅读,更多相关《数据库第8章数据编程.ppt(99页珍藏版)》请在三一办公上搜索。
1、第8章 数据库编程,主讲教师:杨丽丽E-mail:Tel:17709213676,87091337(O),第8章 Oracle数据库编程,8.1 PL/SQL简介8.2 游标8.3 存储过程8.4 触发器,8.1 PL/SQL简介,1.简介PL/SQL也是一种程序语言,叫做过程化SQL语言(Procedural Language/SQL)。PL/SQL是Oracle数据库对标准数据库语言SQL的扩展。在普通SQL语句的使用上增加了编程语言的特点,所以PL/SQL就是把数据操作和查询语句组织在PL/SQL代码的过程性单元中,通过逻辑判断、循环等操作实现复杂的功能或者计算的程序语言。,8.1 PL
2、/SQL简介,1.简介PL/SQL程序由三个部分组成,即声明部分、执行部分、异常处理部分。PL/SQL程序的结构如下:DECLARE/*声明部分:在此声明PL/SQL用到的变量,类型及游标,以及局部的存储过程和函数*/BEGIN/*执行部分:过程及SQL语句,即程序的主要部分*/EXCEPTION/*执行异常部分:错误处理*/END;,8.1 PL/SQL简介,1.简介PL/SQL程序由三个部分组成,即声明部分、执行部分、异常处理部分。PL/SQL程序的结构如下:DECLARE/*声明部分:在此声明PL/SQL用到的变量,类型及游标,以及局部的存储过程和函数*/BEGIN/*执行部分:过程及S
3、QL语句,即程序的主要部分*/EXCEPTION/*执行异常部分:错误处理*/END;,8.1 PL/SQL简介,1.简介PL/SQL程序由三个部分组成,即声明部分、执行部分、异常处理部分。PL/SQL程序的结构如下:DECLARE/*声明部分:在此声明PL/SQL用到的变量,类型及游标,以及局部的存储过程和函数*/BEGIN/*执行部分:过程及SQL语句,即程序的主要部分*/EXCEPTION/*执行异常部分:错误处理*/END;,8.1 PL/SQL简介,1.简介PL/SQL程序由三个部分组成,即声明部分、执行部分、异常处理部分。PL/SQL程序的结构如下:DECLARE/*声明部分:在此
4、声明PL/SQL用到的变量,类型及游标,以及局部的存储过程和函数*/BEGIN/*执行部分:过程及SQL语句,即程序的主要部分*/EXCEPTION/*执行异常部分:错误处理*/END;,8.1 PL/SQL简介,1.简介PL/SQL程序由三个部分组成,即声明部分、执行部分、异常处理部分。PL/SQL程序的结构如下:DECLARE/*声明部分:在此声明PL/SQL用到的变量,类型及游标,以及局部的存储过程和函数*/BEGIN/*执行部分:过程及SQL语句,即程序的主要部分*/EXCEPTION/*执行异常部分:错误处理*/END;其中执行部分是必须的。,8.1 PL/SQL简介,2.变量及数据
5、类型(1)变量声明在declare部分声明变量,格式如下:declare 变量名 数据类型;变量名 数据类型;(2)变量赋值 变量赋值格式如下:变量名:常量或表达式可以在声明变量的同时给变量赋值,也可以在执行部分单独给变量赋值。,8.1 PL/SQL简介,2.变量及数据类型例:DECLAREv_sno VARCHAR2(10):=04001;v_cno VARCHAR2(10):=001;v_grade NUMBER:=90;BEGININSERT INTO SC VALUES(v_sno,v_cno,v_grade);COMMIT;END;,8.1 PL/SQL简介,2.变量及数据类型除了常
6、用的数据类型外,在Oracle中还有两个比较特殊的数据类型:%TYPE 和%ROWTYPE。%TYPE定义一个变量,其数据类型与已经定义的某个数据变量的类型相同,或者与数据库表的某个列的数据类型相同,这时可以使用%TYPE。使用%TYPE特性的优点在于:所引用的数据库列的数据类型可以不必知道;所引用的数据库列的数据类型可以实时改变。,8.1 PL/SQL简介,2.变量及数据类型%ROWTYPEPL/SQL提供%ROWTYPE操作符,返回一个记录类型,其数据类型和数据库表的数据结构相一致。使用%ROWTYPE特性的优点在于:所引用的数据库中列的个数和数据类型可以不必知道;所引用的数据库中列的个数
7、和数据类型可以实时改变。,8.1 PL/SQL简介,3.运算符与表达式一般运算符,8.1 PL/SQL简介,3.运算符与表达式关系运算符,8.1 PL/SQL简介,3.运算符与表达式逻辑运算符,8.1 PL/SQL简介,4.pl/sql流程控制语句PL/SQL的流程控制语句,包括如下三类:顺序语句:GOTO语句:无条件跳转到指定的标号 NULL语句:说明“不用做任何事情”的意思,相当于一个占位符 条件语句:IF 语句循环语句:LOOPEND LOOP语句WHILE语句FOR循环语句,8.1 PL/SQL简介,IF THENPL/SQL 和 SQL语句END IF;,IF THENPL/SQL
8、和 SQL语句ELSIF THEN其它语句ELSIF THEN其它语句ELSE其它语句END IF;,IF THENPL/SQL 和 SQL语句ELSE其它语句END IF;,条件语句,declare m sc.grade%type;begin select grade into m from sc where sno=04001 and cno=005;if m=60 and m=80 and m90 then dbms_output.put_line(良好);else dbms_output.put_line(优秀);end if;end;,条件语句,8.1 PL/SQL简介,编写PL/S
9、QL程序,查询姓名为陈旭的学生所选所有课程的成绩,根据成绩输出成绩等级。,8.1 PL/SQL简介,循环语句LOOP 要执行的语句;EXIT WHEN END LOOP;WHILE LOOP 要执行的语句;END LOOP;,declare x number(2):=0;begin loop x:=x+1;dbms_output.put_line(x 的当前值为:|x);exit when x=10;end loop;end;,8.1 PL/SQL简介,declare x number:=0;begin x:=1;while x10 loop dbms_output.put_line(x 的当
10、前值为:|x);x:=x+1;end loop;end;,8.1 PL/SQL简介,8.1 PL/SQL简介,循环语句FOR 循环变量 IN 下限.上限 LOOP 要执行的语句;END LOOP;每循环一次,循环变量自动加1;跟在IN 后面的数字必须是从小到大的顺序,而且必须是整数,不能是变量或表达式。可以使用EXIT 退出循环。,begin for x in 1.10 loop dbms_output.put_line(x 的当前值为:|x);end loop;end;,第8章 Oracle数据库编程,8.1 PL/SQL简介8.2 游标8.3 存储过程8.4 触发器,1.问题提出,Sele
11、ct s.sno,sname,cname,gradeFrom s,sc,cWhere s.sno=sc.sno and o=o and college=信息,SQL操作数据特点:集合操作,1.问题提出,Select s.sno,sname,cname,gradeFrom s,sc,cWhere s.sno=sc.sno and o=o and college=信息,declare a varchar2(10);b varchar2(20);c varchar2(40);d number;m number;begin a:=04023;b:=段希飞;c:=形式与政策;d:=100;m:=0;if
12、(d60)then m:=m+d;dbms_output.put_line(a|b|c|d|m);end if;end;,SQL操作数据特点:集合操作,1.问题提出,Select s.sno,sname,cname,gradeFrom s,sc,cWhere s.sno=sc.sno and o=o and college=信息,declare a varchar2(10);b varchar2(20);c varchar2(40);d number;m number;begin a:=04023;b:=段希飞;c:=形式与政策;d:=100;m:=0;if(d60)then m:=m+d;d
13、bms_output.put_line(a|b|c|d|m);end if;end;,SQL操作数据特点:集合操作,1.问题提出,Select s.sno,sname,cname,gradeFrom s,sc,cWhere s.sno=sc.sno and o=o and college=信息,declare a varchar2(10);b varchar2(20);c varchar2(40);d number;m number;begin a:=04023;b:=段希飞;c:=形式与政策;d:=100;m:=0;if(d60)then m:=m+d;dbms_output.put_lin
14、e(a|b|c|d|m);end if;end;,SQL操作数据特点:集合操作,1.问题提出,Select s.sno,sname,cname,gradeFrom s,sc,cWhere s.sno=sc.sno and o=o and college=信息,declare a varchar2(10);b varchar2(20);c varchar2(40);d number;m number;begin a:=04023;b:=段希飞;c:=形式与政策;d:=100;m:=0;if(d60)then m:=m+d;dbms_output.put_line(a|b|c|d|m);end i
15、f;end;,SQL操作数据特点:集合操作,1.问题提出,Select s.sno,sname,cname,gradeFrom s,sc,cWhere s.sno=sc.sno and o=o and college=信息,declare a varchar2(10);b varchar2(20);c varchar2(40);d number;m number;begin a:=04023;b:=段希飞;c:=形式与政策;d:=100;m:=0;if(d60)then m:=m+d;dbms_output.put_line(a|b|c|d|m);end if;end;,SQL操作数据特点:集
16、合操作,编程语言操作数据特点:记录操作,1.问题提出,declare a varchar2(10);b varchar2(20);c varchar2(40);d number;m number;begin a:=04023;b:=段希飞;c:=形式与政策;d:=100;m:=0;if(d60)then m:=m+d;dbms_output.put_line(a|b|c|d|m);end if;end;,如何在一段程序中处理所有的查询结果?,2.问题分析,declare a varchar2(10);b varchar2(20);c varchar2(40);d number;m number
17、;begin a:=04023;b:=段希飞;c:=形式与政策;d:=100;m:=0;if(d60)then m:=m+d;dbms_output.put_line(a|b|c|d|m);end if;end;,方案1:使用多个变量,v1,v2,v3,vn,查询结果数据量大,不断变化,不可行!,2.问题分析,declare a varchar2(10);b varchar2(20);c varchar2(40);d number;m number;begin a:=04023;b:=段希飞;c:=形式与政策;d:=100;m:=0;if(d60)then m:=m+d;dbms_output
18、.put_line(a|b|c|d|m);end if;end;,方案2:临时存储查询结果,临时存储,内存空间,3.游标概念,在 PL/SQL 程序中,对于处理多行记录的事务经常使用游标来实现。游标是系统为用户开设的一个数据缓冲区,内存中一段连续的存储单元,存放SQL语句的执行结果。每个游标区都有一个名字。PL/SQL通过游标提供了一个对结果集进行逐行处理的能力,游标可以看作一种特殊的指针,它与某个查询结果相联系,可以指向结果集的任意位置,以便对指定位置的数据进行处理。使用游标可以在查询数据的同时对数据进行处理。,4.游标使用步骤,4.游标使用步骤,declare a varchar2(10)
19、;b varchar2(20);c varchar2(40);d number;m number;begin a:=04023;b:=段希飞;c:=形式与政策;d:=100;m:=0;if(d60)then m:=m+d;dbms_output.put_line(a|b|c|d|m);end if;end;,请在内存中给我分配一段连续的存储空间,我要用来存放*查询的执行结果。,Declare Cursor c1 is Select s.sno,sname,cname,grade From s,sc,c Where s.sno=sc.sno and o=o and college=信息,翻 译,
20、4.游标使用步骤,declare a varchar2(10);b varchar2(20);c varchar2(40);d number;m number;cursor c1 is Select s.sno,sname,cname,grade From s,sc,c Where s.sno=sc.sno and o=o and college=信息;begin a:=04023;b:=段希飞;c:=形式与政策;d:=100;m:=0;if(d60)then m:=m+d;dbms_output.put_line(a|b|c|d|m);end if;end;,0 x00000018,0 x0
21、000001B,0 x0000001C,0 x0000001D,0 x0000001E,0 x0000001F,0 x00000019,0 x0000001A,4.游标使用步骤,declare a varchar2(10);b varchar2(20);c varchar2(40);d number;m number;cursor c1 is Select s.sno,sname,cname,grade From s,sc,c Where s.sno=sc.sno and o=o and college=信息;begin a:=04023;b:=段希飞;c:=形式与政策;d:=100;m:=0
22、;if(d60)then m:=m+d;dbms_output.put_line(a|b|c|d|m);end if;end;,0 x00000018,0 x0000001B,0 x0000001C,0 x0000001D,0 x0000001E,0 x0000001F,0 x00000019,0 x0000001A,open c1;,4.游标使用步骤,declare a varchar2(10);b varchar2(20);c varchar2(40);d number;m number;cursor c1 is Select s.sno,sname,cname,grade From s,
23、sc,c Where s.sno=sc.sno and o=o and college=信息;begin open c1;a:=04023;b:=段希飞;c:=形式与政策;d:=100;m:=0;if(d60)then m:=m+d;dbms_output.put_line(a|b|c|d|m);end if;end;,4.游标使用步骤,04023,段希飞,形式与政策,100,a b c d,fetch c1 into a,b,c,d;,04023,段希飞,形式与政策,100,04023,段希飞,形式与政策,100,4.游标使用步骤,04023,段希飞,形式与政策,100,a b c d,fe
24、tch c1 into a,b,c,d;if(d60)then m:=m+d;dbms_output.put_line(a|b|c|d|m);end if;,04023,段希飞,体育,65,4.游标使用步骤,a b c d,fetch c1 into a,b,c,d;if(d60)then m:=m+d;dbms_output.put_line(a|b|c|d|m);end if;,04023,段希飞,体育,65,4.游标使用步骤,04023,段希飞,形式与政策,100,a b c d,loop fetch c1 into a,b,c,d;if(d60)then m:=m+d;dbms_out
25、put.put_line(a|b|c|d|m);end if;end loop;,c1%notfound:指针指向结果集中的元组返回False,否则返回True,4.游标使用步骤,loop fetch c1 into a,b,c,d;if(d60)then m:=m+d;dbms_output.put_line(a|b|c|d|m);end if;end loop;,exit,when c1%notfound;,4.游标使用步骤,loop fetch c1 into a,b,c,d;if(d60)then m:=m+d;dbms_output.put_line(a|b|c|d|m);end i
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 数据库 数据 编程
链接地址:https://www.31ppt.com/p-6578569.html