ORACLEStoreProcedure

上传人:飞*** 文档编号:57229460 上传时间:2018-10-20 格式:PPT 页数:12 大小:309KB
返回 下载 相关 举报
ORACLEStoreProcedure_第1页
第1页 / 共12页
ORACLEStoreProcedure_第2页
第2页 / 共12页
ORACLEStoreProcedure_第3页
第3页 / 共12页
ORACLEStoreProcedure_第4页
第4页 / 共12页
ORACLEStoreProcedure_第5页
第5页 / 共12页
点击查看更多>>
资源描述

《ORACLEStoreProcedure》由会员分享,可在线阅读,更多相关《ORACLEStoreProcedure(12页珍藏版)》请在金锄头文库上搜索。

1、存储过程,1 存储过程在Oracle中,可以在数据库中定义子程序,这种程序块称为存储过程 (procedure)。它存放在数据字典中,可以在不同用户和应用程序之间共享,并可 实现程序的优化和重用。使用存储过程的优点是: (1) 过程在服务器端运行,执行速度快。 (2) 过程执行一次后代码就驻留在高速缓冲存储器,在以后的操作中,只需从高 速缓冲存储器中调用已编译代码执行,提高了系统性能。 (3) 确保数据库的安全。可以不授权用户直接访问应用程序中的一些表,而是授 权用户执行访问这些表的过程。非表的授权用户除非通过过程,否则就不能访问 这些表。 (4) 自动完成需要预先执行的任务。过程可以在系统启

2、动时自动执行,而不必在 系统启动后再进行手工操作,大大方便了用户的使用,可以自动完成一些需要预 先执行的任务。,1.1 存储过程的创建和执行,用户存储过程只能定义在当前数据库中,可以使用SQL命令语句或OEM创建存 储过程。缺省情况下,用户创建的存储过程归登录数据库的用户所拥有,DBA可 以把许可授权给其他用户。在用户的定义中不能使用下列对象创建语句: CREATE VIEW CREATE DEFAULT CREATE RULE CREATE PROCEDURE CREATE TRIGGER,1.1 存储过程的创建和执行,1. SQL命令创建存储过程 语法格式:CREATE OR REPLAC

3、E PROCEDURE schema.procedure_name /*定义过程名*/ (parameter parameter_mode date_type , n) /*定义参数类型及属性*/IS | ASBEGINsql_statement /*PL/SQL过程体,要执行的操作*/END procedure_name 其中: procedure_name:是过程名,必须符合标识符规则。关键字REPLACE表示在创建过程 时,如果已存在同名的过程,则重新创建。如果使用CREATE关键字,则需将原有的过程 删除后才能创建。 schema.:是指定过程属于的用户方案。 parameter:是过

4、程的参数。参数名必须符合标识符规则,创建过程时,可以声明一个或多 个参数,执行过程时应提供相对应的参数。Parameter_mode是参数的类型,过程参数和 函数参数一样,也有3种类型,分别为IN、OUT和IN OUT。 IN:表示参数是输入给过程的; OUT:表示参数在过程中将被赋值,可以传给过程体的外部; IN OUT:表示该类型的参数既可以向过程体传值,也可以在过程体中赋值。 sql_statement:代表过程体包含的PL/SQL语句。,1.1 存储过程的创建和执行,2. 调用存储过程 直接输入存储过程的名字就可以执行一个已定义的存储过程。 语法格式:EXECUTE procedure

5、_name(parameter,n) 其中,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;,1.1 存储过程的创建和执行,【例6.2】从XSCJ数据库的XS表中查询某人的总学分,根据总学分写评语。CREATE OR

6、 REPLACE PROCEDURE update_info( xm in char )ASXf number;BEGINSELECT ZXFINTO XFFROM XSWHERE XM=xm;IF XF60 THENUPDATE XS SET BZ=三好学生 WHERE XM=xm;END IF;IF XF60 THENUPDATE XS SET BZ=三好学生 WHERE XM=xm;END IF;IF XF35 THENUPDATE XS SET BZ=学分未修满 WHERE XM=xm;END IF;END update_info;,1.2 存储过程的编辑修改,【例6.6】创建名为se

7、lect_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) 修改过程CREATE OR REPL

8、ACE 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;,1.3 存储过程的删除,当某个过程不再需要时,应将其从内存中删除,以释放它占用的内存资源。语法格式:DROP PROCEDURE schema. procedure_name; 其中,schema是包含过程的用户;procedure_name是将要删除的存储过程名称。【例6.7】删除XSCJ数据库中的count_num存储过程。DROP PROCEDURE count_num;也可在OEM中选择要删除的存储过程,在如图6.2所示的界面,搜索并选择要删 除的存储过程,单击“删除”,出现确认删除界面,单击“是”即可删除该存储过程。,

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 行业资料 > 其它行业文档

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号