Oracle-存储过程、函数、触发器和包ppt课件.ppt
《Oracle-存储过程、函数、触发器和包ppt课件.ppt》由会员分享,可在线阅读,更多相关《Oracle-存储过程、函数、触发器和包ppt课件.ppt(35页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、Oracle存储过程、函数、触发器和包主要内容o存储过程o函数o触发器o包存储过程和函数o存储过程和函数是存入数据库的PL/SQL块。o但存储过程和函数不同于已经介绍过的PL/SQL程序块,我们通常把PL/SQL程序称为无名块,而存储过程和函数是以命名的方式存储于数据库中的。和PL/SQL程序相比,存储过程有很多优点,具体归纳如下:n存储过程和函数以命命名名的的数数据据库库对对象象形形式式存储于数据库的数据字典中,事先经过编译排除错误。可以重复调用、效率更高。n存储过程和函数可由数据库提供安全保证,要想使用存储过程和函数,需要有存储过程和函数的所有者的授权,只有被授权的用户或创建者本身才能执行
2、存储过程或调用函数。n像其他高级语言的过程和函数一样,可以传递参数给存储过程或函数,参数的传递也有多种方式。存储过程可以有返回值,也可以没有返回值,存储过程的返回值必须通过参数带回;函数有一定的数据类型,像其他的标准函数一样,我们可以通过对函数名的调用返回函数值。创建存储过程o创建存储过程,需要有CREATE PROCEDURE或CREATE ANY PROCEDURE的系统权限。o创建一个存储过程的基本语句如下:nCREATE OR REPLACE PROCEDURE 存储过程名(参数IN|OUT|IN OUT 数据类型.)nAS|ISn说明部分nBEGINn可执行部分nEXCEPTIONn
3、 错误处理部分nEND 过程名;o可选关键字OR REPLACE 表示如果存储过程已经存在,则用新的存储过程覆盖,通常用于存储过程的重建。o参数部分用于定义多个参数(如果没有参数,就可以省略)。参数有三种形式:IN、OUT和和IN OUT。如果没有指明参数的形式,则默认为IN。o关键字AS也可以写成IS,后跟过程的说明部分,可以在此定义过程的局部变量。o编写存储过程可以使用任何文本编辑器或直接在SQL*Plus环境下进行,编写好的存储过程必须要在SQL*Plus环境下进行编译,生成编译代码,原代码和编译代码在编译过程中都会被存入数据库。编译成功的存储过程就可以在Oracle环境下进行调用了。创
4、建存储过程说明删除、修改和执行o一个存储过程在不需要时可以删除。n删除存储过程的人是过程的创建者或者拥有DROP ANY PROCEDURE系统权限的人。n删除存储过程的语法:DROP PROCEDURE 存储过程名;o如果要重新编译一个存储过程,n则只能是过程的创建者或者拥有ALTER ANY PROCEDURE系统权限的人。n语法如下:ALTER PROCEDURE 存储过程名 COMPILE;o执行存储过程:n执行(或调用)存储过程的人是过程的创建者或是拥有EXECUTE ANY PROCEDURE系统权限的人或是被拥有者授予EXECUTE权限的人。n方法1:call 模式名.存储过程名
5、(参数.);n方法2:BEGIN 模式名.存储过程名(参数.);ENDo传传递递的的参参数数必须与定义的参数类型、个数和顺序一致(如果参数定义了默认值,则调用时可以省略参数)。参数可以是变量、常量或表达式,用法参见下一节。o如果是调用本账户下的存储过程,则模式名可以省略。要调用其他账户编写的存储过程,则模模式式名名必须要添加。o存储过程没有参数,在调用时,直接写过程名即可。o见例子输出hello,world!存储过程调用说明ocreate or replace procedure parapro(id in varchar2 default 001,name in varchar2 defau
6、lt mly)oisobegino Dbms_Output.put_line(id);o Dbms_Output.put_line(name);oend parapro;o/*odeclare o v_id varchar2(100);o v_name varchar2(100);obeginoparapro();oparapro(002);oparapro(name=mao);oparapro(id=v_id,name=v_name);oend;o*/o参数的作用是向存储过程传递数据,或从存储过程获得返回结果。正确的使用参数可以大大增加存储过程的灵活性和通用性。o参数定义语法:n参数名 参数
7、类型 数据类型 DEFAULT 值;o参数的类型有三种nIN 定义输出变量,传入参数给存储过程。可以是变量或者值nOUT 定义输出变量,从存储过程中拿到数据。只能是变量nIN OUT 既是输出也是输入参数。只能是变量。o例子:分别带上不同类型的参数参数传递主要内容o存储过程o函数函数o触发器o包o需要有CREATE FUNCTION或CREATE ANY FUNCTION的系统权限。o创建存储函数的语法和创建存储过程的类似,即nCREATE OR REPLACE FUNCTION 函数名(参数IN 数据类型.)参数是可选的,但只能是IN类型(可以省略)nRETURN 数据类型数据类型retur
8、n 返回值类型,不可省略返回值类型,不可省略nAS|ISn说明部分nBEGINn可执行部分nRETURN(表达式)nEXCEPTIONn错误处理部分nEND 函数名;创建函数o删除n一个存储函数在不需要时可以删除,但删除的人应是函数的创建者或者是拥有DROP ANY function系统权限的人。其语法如下:nDROP FUNCTION 函数名;o重新编译n重新编译一个存储函数时,编译的人应是函数的创建者或者拥有ALTER ANY function系统权限的人。n语法如下:ALTER function 函数名 COMPILE;o调用n函数的调用者应是函数的创建者或拥有EXECUTE ANY f
9、unction系统权限的人n函数的引用和存储过程不同,函数要出现在程序体中,可以参加表达式的运算或单独出现在表达式中,其形式如下:变量名:=函数名(.)o函数的例子删除、修改、调用函数ocreate or replace function getnamebyidfun(id in varchar2)return varchar2 oiso Result varchar2(100);obegino select name into result from student where studentid=id;o return(Result);oexception owhen no_data_fo
10、und then o return no data found!;oend getnamebyidfun;o/*odeclare o v_id varchar2(100):=001;o v_name varchar2(100);obeginov_name:=getnamebyidfun(v_id);oDbms_Output.put_line(v_name);oend;o*/o例子可以通过对数据字典的访问来查询存储过程或函数的有关信息,如果要查询当前用户的存储过程或函数的源代码,可以通过对USER_SOURCE数据字典视图的查询得到。USER_SOURCE的结构如下:DESCRIBE USER_
11、SOURCEnselect TEXT from user_source WHERE NAME=EMP_COUNT;nDESCRIBE GET_EMP_NAMEnSELECT STATUS FROM USER_OBJECTS WHERE OBJECT_NAME=EMP_LIST;存储过程和函数的查看主要内容o存储过程o函数o触发器触发器o包触发器介绍o触发器是一种特殊的存储过程,它在插入,删除或修改特定表中的数据时(事件)触发执行.o触发器的触发事件分可为3类,分别是DML事件、DDL事件和数据库事件。o每类事件包含若干个事件,如下表所示。数据库的事件是具体的,在创建触发器时要指明触发的事件。触
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- Oracle 存储 过程 函数 触发器 ppt 课件
限制150内