Oracle数据库--存储过程、函数、触发器和包8425.pptx
《Oracle数据库--存储过程、函数、触发器和包8425.pptx》由会员分享,可在线阅读,更多相关《Oracle数据库--存储过程、函数、触发器和包8425.pptx(35页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、第10章 存储过程、函数、触发器和包4本章要点:掌握存储过程的创建。熟练掌握带参数的存储过程的使用。掌握存储过程的管理。掌握函数的创建与使用。了解触发器的类型。理解触发器的作用。熟练掌握各种类型的触发器。了解程序包的创建与使用。210.1 存 储 过 程4存储过程是一组为了完成特定功能的SQL语句集,它大大提高了SQL语句的功能和灵活性。4存储过程经编译后存储在数据库中,所以执行存储过程要比执行存储过程中封装的SQL语句更有效率。310.1.1 创建与调用存储过程4创建存储过程需要使用CREATE PROCEDURE语句,其语法如下:CREATE OR REPLACE PROCEDURE pr
2、ocedure_name (parameter IN|OUT|IN OUT data_type),.IS|AS declaration_section;BEGINprocedure_body;END procedure_name ;410.1.1 创建与调用存储过程4【例【例10.1】创建一个简单的存储过程update_emp,该过程用于将emp表中empno为6500的员工的姓名修改为CANDY,如下:SQL CREATE PROCEDURE update_emp AS 2 BEGIN 3 UPDATE emp SET ename=CANDY WHERE empno=6500;4 END u
3、pdate_emp;SQL/过程已创建。4【例【例10.2】使用EXECUTE语句与CALL语句调用存储过程update_emp,分别如下:SQL EXECUTE update_emp;PL/SQL 过程已成功完成。510.1.2 带参数的存储过程41IN参数的使用IN参数是指输入参数,由存储过程的调用者为其赋值(也可以使用默认值)。如果不为参数指定模式,则其模式默认为IN。在调用上述存储过程update_emp2时,就需要为该过程的两个输入参数赋值,赋值的形式主要有如下两种。|(1)不指定参数名不指定参数名|(2)指定参数名指定参数名 42OUT参数的使用OUT参数是指输出参数,由存储过程中
4、的语句为其赋值,并返回给用户。使用这种模式的参数,必须在参数后面添加OUT关键字。43IN OUT参数的使用IN OUT参数同时拥有IN与OUT参数的特性,它既接受用户的传值,又允许在过程体中修改其值,并可以将值返回。使用这种模式的参数需要在参数后面添加IN OUT关键字。不过,IN OUT参数不接受常量值,只能使用变量为其传值。610.1.2 带参数的存储过程4【例【例10.3】创建带IN参数的存储过程update_emp2,为该过程设置两个IN参数,分别用于接受用户提供的empno与ename值,如下:SQL CREATE PROCEDURE update_emp2 2 (emp_num
5、IN NUMBER,emp_name IN VARCHAR2)AS 3 BEGIN 4 UPDATE emp SET ename=emp_name 5 WHERE empno=emp_num;6 END update_emp2;7 /过程已创建。710.1.2 带参数的存储过程4【例【例10.4】调用update_emp2过程,通过该过程将empno为6500的员工的ename修改为XIAOQI,如下:SQL EXEC update_emp2(6500,XIAOQI);PL/SQL 过程已成功完成。4【例【例10.5】使用指定参数名的形式调用update_emp2过程,如下:SQL EXEC
6、update_emp2(emp_name=XIAOQI,emp_num=6500);PL/SQL 过程已成功完成。810.1.2 带参数的存储过程4【例【例10.6】创建存储过程select_emp,为该过程设置一个IN参数和一个OUT参数,其中IN参数接受用户提供的empno值,然后在过程体中将该empno对应的ename值传递给OUT参数,如下:SQL CREATE PROCEDURE select_emp 2 (emp_num IN NUMBER,emp_name OUT VARCHAR2)AS 3 BEGIN 4 SELECT ename INTO emp_name 5 FROM em
7、p WHERE empno=emp_num;6 END select_emp;7 /过程已创建。910.1.2 带参数的存储过程4【例【例10.7】调用存储过程select_emp,为其IN参数赋值为6500,并声明变量employee_ name接受与输出其OUT参数的返回值,如下:|SQL VARIABLE employee_name VARCHAR2(10);|SQL EXEC select_emp(6500,:employee_name);|PL/SQL 过程已成功完成。过程已成功完成。然后,需要使用PRINT命令查看变量employee_name中的值,如下:|SQL PRINT e
8、mployee_name;|EMPLOYEE_NAME|-|XIAOQI也可以使用SELECT语句查看变量employee_name中的值,语句如下:|SQL SELECT:employee_name FROM dual;1010.1.2 带参数的存储过程4【例【例10.8】创建存储过程exchange_value,通过该过程交换两个变量中的值,过程创建如下:参见教材P227|调用调用exchange_value过程,调用前声过程,调用前声明为明为IN OUT参数赋值的变量,调用后参数赋值的变量,调用后使用使用SELECT语句输出交换值后的结果,语句输出交换值后的结果,如下:如下:参见教材P2
9、271110.1.3 修改与删除存储过程4修改存储过程是在CREATE PROCEDURE语句中添加OR REPLACE关键字,其他内容与创建存储过程一样,其实质是删除原有过程,然后创建一个全新的过程,只不过前后两个过程的名称相同而已。4删除存储过程需要使用DROP PROCEDURE语句,其语法形式如下:DROP PROCEDURE procedure_name;1210.1.4 查询存储过程的定义信息4对于创建好的存储过程,如果想要了解其定义信息,可以查询数据字典user_source。4【例【例10.9】通过数据字典user_source查询存储过程select_emp的定义信息,如下:
10、参见教材P2284其中,name表示对象名称;type表示对象类型;line表示定义信息中文本所在的行数;text表示对应行的文本信息。1310.2 函 数4创建函数需要使用CREATE FUNCTION语句,其语法如下:CREATE OR REPLACE FUNCTION function_name(parameter IN|OUT|IN OUT data_type),.RETURN data_type IS|AS declaration_section;BEGINfunction_body;END function_name ;1410.3 实验指导使用存储过程与函数查询图书信息4实验指导
11、10-1:使用存储过程和函数查询图书信息1创建函数get_prompt|首先创建函数首先创建函数get_prompt,如下:,如下:v参见教材参见教材P2302创建存储过程get_book_information3调用过程|存储过程和函数都已经创建好了,需要查询存储过程和函数都已经创建好了,需要查询某图书的信息时就可以直接调用某图书的信息时就可以直接调用get_book_information存储过程。例如获取存储过程。例如获取bookid为为2的图书的信息,如下:的图书的信息,如下:v参见教材参见教材P2311510.4 触 发 器4触发器是一种特殊的存储过程,它在发生某种数据库事件时由Or
12、acle系统自动触发。4触发器通常用于加强数据的完整性约束和业务规则等,对于表来说,触发器可以实现比CHECK约束更为复杂的约束。1610.4.1 触发器的类型4DML触发器:DML触发器由DML语句触发,例如INSERT、UPDATE和DELETE语句。4INSTEAD OF触发器:INSTEAD OF触发器又称替代触发器,用于执行一个替代操作来代替触发事件的操作。4系统事件触发器:系统事件触发器在发生如数据库启动或关闭等系统事件时触发。4DDL触发器:DDL触发器由DDL语句触发,例如CREATE、ALTER和DROP语句。DDL触发器同样可以分为BEFORE触发器与AFTER触发器。17
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- Oracle 数据库 存储 过程 函数 触发器 8425
限制150内