oracle10g经典实战第6章-存储过程和触发器.ppt
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_05.gif)
《oracle10g经典实战第6章-存储过程和触发器.ppt》由会员分享,可在线阅读,更多相关《oracle10g经典实战第6章-存储过程和触发器.ppt(27页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、6.1.1存储过程的创建和执行存储过程的创建和执行用户存储过程只能定义在当前数据库中,可以使用SQL命令语句或OEM创建存储过程。缺省情况下,用户创建的存储过程归登录数据库的用户所拥有,DBA可以把许可授权给其他用户。在用户的定义中不能使用下列对象创建语句:CREATE VIEWCREATE DEFAULT CREATE RULE CREATE PROCEDURE CREATE TRIGGER6.1.1存储过程的创建和执行存储过程的创建和执行1.SQL命令创建存储过程命令创建存储过程语法格式:语法格式:CREATE OR REPLACE PROCEDURE schema.procedure_n
2、ame /*定义过程名*/ (parameter parameter_mode date_type , n) /*定义参数类型及属性*/IS | ASBEGIN sql_statement /*PL/SQL过程体,要执行的操作*/END procedure_name其中:其中:procedure_name:是过程名,必须符合标识符规则。关键字REPLACE表示在创建过程时,如果已存在同名的过程,则重新创建。如果使用CREATE关键字,则需将原有的过程删除后才能创建。schema.:是指定过程属于的用户方案。parameter:是过程的参数。参数名必须符合标识符规则,创建过程时,可以声明一个或多
3、个参数,执行过程时应提供相对应的参数。Parameter_mode是参数的类型,过程参数和函数参数一样,也有3种类型,分别为IN、OUT和IN OUT。 IN:表示参数是输入给过程的; OUT:表示参数在过程中将被赋值,可以传给过程体的外部; IN OUT:表示该类型的参数既可以向过程体传值,也可以在过程体中赋值。sql_statement:代表过程体包含的PL/SQL语句。6.1.1存储过程的创建和执行存储过程的创建和执行2. 调用存储过程调用存储过程直接输入存储过程的名字就可以执行一个已定义的存储过程。语法格式:语法格式:EXECUTE procedure_name(parameter,n
4、)其中,procedure_name为要调用的存储过程的名字,parameter为参数值。【例【例6.1】计算指定系总学分大于40的人数。CREATE OR REPLACE PROCEDURE count_grade( zym in char,person_num out number )ASBEGINSELECT COUNT(ZXF)INTO person_numFROM XSWHERE ZYM=zym;END count_grade;6.1.1存储过程的创建和执行存储过程的创建和执行【例【例6.2】从XSCJ数据库的XS表中查询某人的总学分,根据总学分写评语。CREATE OR REPLA
5、CE PROCEDURE update_info( xm in char )ASXf number;BEGIN SELECT ZXF INTO XF FROM XS WHERE XM=xm; IF XF60 THEN UPDATE XS SET BZ=三好学生 WHERE XM=xm; END IF; IF XF60 THEN UPDATE XS SET BZ=三好学生 WHERE XM=xm; END IF; IF XF35 THEN UPDATE XS SET BZ=学分未修满 WHERE XM=xm; END IF;END update_info;6.1.2 存储过程的编辑修改存储过程的
6、编辑修改【例【例6.6】创建名为select_students的存储过程,默认情况下,该过程可查询所有学生的信息。当该过程需要改为能检索计算机专业的学生信息时,用CREATE OR REPLACE PROCEDURE重新定义。(1) 定义过程CREATE OR REPLACE PROCEDURE select_students( CUR OUT select.cur_07 )ASBEGINOPEN CUR FORSELECT xh,xm,zym,xb,cssj,zxf,bz FROM XSORDER BY XH;END;注意:注意:使用查询包头时在SELECT语句中不能使用*标识符。(2) 修
7、改过程CREATE OR REPLACE PROCEDURE select_students( CUR OUT select.cur_07 )ASBEGINOPEN CUR FORSELECT xh,xm,zym,xb,cssj,zxf,bz FROM XSWHERE ZYM=计算机 ORDER BY XH;END;6.1.3 存储过程的删除存储过程的删除当某个过程不再需要时,应将其从内存中删除,以释放它占用的内存资源。语法格式:语法格式:DROP PROCEDURE schema. procedure_name;其中,schema是包含过程的用户;procedure_name是将要删除的存储
8、过程名称。【例【例6.7】删除XSCJ数据库中的count_num存储过程。DROP PROCEDURE count_num;也可在OEM中选择要删除的存储过程,在如图6.2所示的界面,搜索并选择要删除的存储过程,单击“删除”,出现确认删除界面,单击“是”即可删除该存储过程。6.2 触发器触发器触发器(trigger)是一些过程,与表关系密切,用于保护表中的数据,当一个基表被修改(INSERT、UPDATE或DELETE)时,触发器自动执行,例如通过触发器可实现多个表间数据的一致性和完整性。触发器和应用程序无关。例如,对于XSCJ数据库有XS表、XS_KC表和KC表,当插入某一学号的学生某一课
9、程成绩时,该学号应是XS表中已存在的,课程号应是KC表中已存在的,此时,可通过定义INSERT触发器实现上述功能。触发器的类型有三种: (1) DML触发器。Oracle可以在DML(数据操纵语句)语句进行触发,可以在DML操作前或操作后进行触发,并且可以在每个行或该语句操作上进行触发。(2) 替代触发器。由于在Oracle中不能直接对有两个以上的表建立的视图进行操作,所以给出了替代触发器。它是Oracle专门为进行视图操作的一种处理方法。(3) 系统触发器。在Oracle8i时,提供了第三种类型的触发器叫系统触发器。它可以在Oracle数据库系统的时间中进行触发,如Oracle数据库的关闭或
10、打开等。 6.2 触发器触发器一般情况下,对表数据的操作有插入、修改、删除,因而维护数据的触发器也可分为INSERT、UPDATE和DELETE。每张基表最多可建立12个触发器,它们是:(1) BEFORE INSERT;(2) BEFORE INSERT FOR EACH ROW;(3) AFTER INSERT;(4) AFTER INSERT FOR EACH ROW;(5) BEFORE UPDATE;(6) BEFORE UPDATE FOR EACH ROW;(7) AFTER UPDATE;(8) AFTER UPDATE FOR EACH ROW;(9) BEFORE DELE
11、TE;(10) BEFORE DELETE FOR EACH ROW;(11) AFTER DELETE;(12) AFTER DELETE FOR EACH ROW。6.2.1 利用利用SQL语句创建触发器语句创建触发器1.语法格式语法格式CREATE OR REPLACE TRIGGER schema. trigger_name /*指定触发器名称*/ BEFORE AFTER INSTEAD OF DELETE OR INSERTE OR UPDATE OF column,n /*定义触发器种类*/ON schema. table_name view_name /*指定操作对象*/ FO
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- oracle10g 经典 实战 存储 过程 触发器
![提示](https://www.taowenge.com/images/bang_tan.gif)
限制150内