PL-SQL高级编程.ppt
《PL-SQL高级编程.ppt》由会员分享,可在线阅读,更多相关《PL-SQL高级编程.ppt(33页珍藏版)》请在三一办公上搜索。
1、1,第七章:PL/SQL高级编程 第一节 存储过程函数的概念 第二节 包 第三节 触发器,2,第二节:包 包(package)是一个可以将相关对象存储在一起的PL/SQL结构。它包含了两个分离的组成部分:包说明(specification)和包主体(body)。每个部分都单独被存储在数据字典中。一、包的组成 将相关的若干程序单元组织到一块,用一个包来标识这个集合。,3,包中可以包含的程序单元,4,二、开发包1、开发包的步骤(1)在一个文本文件中写入 CREATE PACKAGE 语句创建一个包的说明。(2)在另一个文本文件中用 CREATE PACKAGE BODY语句创建包主体。(3)在 S
2、QL*Plus中编译这两个文本文件,以将包的源代码编译成编译代码(P-Code),并将这两种代码存入数据库数据字典中。必须先编译创建包说明的文本文件,再编译创建包主体的文本文件。(4)从 ORACLE环境,或者从一个独立的函数或过程中调用包内的公共元素。,5,2、创建包的说明的语法CREATE OR REPLACE PACKAGE 包名IS|AS 公共变量的定义|公共类型的定义|公共出错处理的定义|公共游标的定义|函数说明|过程说明END;/,6,例1:制作sal_package包的说明。生成一个管理雇员薪水的包sal_package,其中包括一个为雇员加薪的过程,降薪的过程,并且在包中还有两
3、个记录所有雇员薪水增加和减少的全局变量。CREATE PACKAGE sal_package IS PROCEDURE raise_sal(v_empno emp.empno%TYPE,v_sal_increment emp.sal%TYPE);PROCEDURE reduce_sal(v_empno emp.empno%TYPE,v_sal_reduce emp.sal%TYPE);v_raise_sal emp.sal%TYPE:=0;v_reduce_sal emp.sal%TYPE:=0;END;/,7,3、创建包主体的语法CREATE OR REPLACE PACKAGE BODY
4、包名IS|AS 私有变量的定义|私有类型的定义|私有出错处理的定义|私有游标的定义|函数定义|过程定义 END;/,8,例2:制作sal_package包的包体。CREATE OR REPLACE PACKAGE BODY sal_package IS PROCEDURE raise_sal(v_empno emp.empno%TYPE,v_sal_increment emp.sal%TYPE)IS BEGIN UPDATE emp SET sal=sal+v_sal_increment WHERE empno=v_empno;COMMIT;v_raise_sal:=v_raise_sal+v
5、_sal_increment;END;,9,PROCEDURE reduce_sal(v_empno emp.empno%TYPE,v_sal_reduce emp.sal%TYPE)IS BEGIN UPDATE emp SET sal=sal-v_sal_reduce WHERE empno=v_empno;COMMIT;v_reduce_sal:=v_reduce_sal+v_sal_reduce;END;END;/,10,三、包的调用 在包的说明部分中声明的所有对象在包外可以被调用,只要指定包的名字即可访问该对象。在不同的环境中调用包中过程的语法有差别,例:从一个单独存储过程中调用包中
6、的过程(作为单独的可执行语句)sal_package.raise_sal(1002,1000);/*给1002员工涨1000元*/begin sal_package.raise_sal(1002,1000);end;/例:从SQL*Plus工具中调用包中的过程 SQL EXECUTE sal_package.raise_sal(1002,1000);,11,四、包的管理1、包的管理命令,当包的说明被删除时,要求把包主体也删除;当删除包主体时,可以不删除包的说明。,12,五、系统包 Oracle事先定义的包称为系统包,这些包可以供用户使用。,13,第三节:触发器一、触发器的基本概念 触发器类似于
7、存储过程和函数,都是由说明部分、语句执行部分和出错处理部分三部分组成的PL/SQL有名块,触发器存储在数据库数据字典中。但是,对于存储过程而言,可以在另一个程序中调用过程,显式地执行一个过程,同时在调用时可以往存储过程传递参数。对于触发器而言,当触发事件发生时隐式地(自动地)执行该触发器,不能在程序中调用触发器,并且触发器不接受参数。,14,1、触发事件和触发器的功能(1)可以触发触发器的事件包括:在数据库表上执行的INSERT、UPDATE、DELETE操作。(2)使用触发器可以做许多事情,包括:维护不可能在表创建时通过说明性约束进行的复杂的完整性约束限制。通过记录所进行的修改以及谁做了修改
8、等信息对表进行审计。当表被修改的时候,自动给需要执行操作的程序发信号。,15,2、触发器的组成,16,3、触发器的类型 触发器分语句级触发器和行级触发器两个级别。行级触发器与语句级触发器的区别主要在于其触发的次数不同,如果该DML语句只影响一行,则语句级与行级触发器效果一样。如果该DML语句影响多行,则行级触发器触发的次数比语句级触发器触发的次数多。,17,根据触发的时间、类型不同,可以组合为四种DML触发器。当执行一条SQL语句时,这四种触发器的触发顺序如箭头所示。,18,4、触发器与存储过程的区别,19,二、创建触发器 1、开发触发器的步骤(1)用文本编辑器编写一个含有 create tr



- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- PL SQL 高级 编程

链接地址:https://www.31ppt.com/p-6514774.html