第10章存储过程、函数和触发器精选文档.ppt
《第10章存储过程、函数和触发器精选文档.ppt》由会员分享,可在线阅读,更多相关《第10章存储过程、函数和触发器精选文档.ppt(40页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、第10章存储过程、函数和触发器本讲稿第一页,共四十页过程和函数概述过程和函数概述匿名的匿名的PL/SQL PL/SQL 块的缺点是,每次执行的时候都要被重块的缺点是,每次执行的时候都要被重新编译,并且不能被存储在数据库中(因此不能被其他新编译,并且不能被存储在数据库中(因此不能被其他PL/SQLPL/SQL块使用)。块使用)。过程与函数是命名的过程与函数是命名的PL/SQLPL/SQL块,被存储在数据库中,块,被存储在数据库中,并且可以被其他并且可以被其他PL/SQLPL/SQL块使用。过程与函数也称为块使用。过程与函数也称为子程序子程序。本讲稿第二页,共四十页过程过程(PROCEDUER):
2、(PROCEDUER):是模块化程序设计的基本概念,是模块化程序设计的基本概念,它将一些相关的它将一些相关的SQLSQL语句,流程控制语句组合在一起,语句,流程控制语句组合在一起,用于用于执行某些特定的操作或者任务执行某些特定的操作或者任务。函数函数(FUNCTION):(FUNCTION):用于用于计算和返回计算和返回特定的数据,可以将特定的数据,可以将经常需要进行的计算写成函数。经常需要进行的计算写成函数。本讲稿第三页,共四十页图:过程和函数的PL/SQL块结构本讲稿第四页,共四十页10.1 创建过程创建过程CREATE OR REPLACE PROCEDURE CREATE OR REP
3、LACE PROCEDURE schema.procedure_nameschema.procedure_namearg1 IN|OUT|IN OUT arg_type1,arg1 IN|OUT|IN OUT arg_type1,arg2 IN|OUT|IN OUT arg_type2,arg2 IN|OUT|IN OUT arg_type2,IS|ASIS|AS声明部分声明部分BEGINBEGIN执行部分执行部分EXCEPTIONEXCEPTION异常处理部分异常处理部分END END procedure_name;procedure_name;本讲稿第五页,共四十页其中其中:OR RELA
4、CEOR RELACE是可选的。如果省略,则创建时不允许是可选的。如果省略,则创建时不允许数据库中有同名的过程;如果使用,则会先删除同名数据库中有同名的过程;如果使用,则会先删除同名的过程,然后创建新的过程。的过程,然后创建新的过程。Arg1,arg2,argnArg1,arg2,argn是过程的形参的名称,是可选的。是过程的形参的名称,是可选的。arg_type1arg_type1,arg_type2 arg_type2,,arg_typen,arg_typen是对应的型参的数据是对应的型参的数据类型。类型。注意:此处的数据类型后面不能带参数,即精度、注意:此处的数据类型后面不能带参数,即精
5、度、范围等,如范围等,如NUMBERNUMBER(1212,2 2)只能写成)只能写成NUMBERNUMBER。IN|OUT|IN OUTIN|OUT|IN OUT是形参的模式。如果省略则为是形参的模式。如果省略则为ININ模式。模式。本讲稿第六页,共四十页ININ用于接受调用程序的值用于接受调用程序的值默认的参数模式默认的参数模式OUTOUT用于向调用程序返回值用于向调用程序返回值 IN OUTIN OUT用于接受调用程序的值,并向调用程序返回更新的值用于接受调用程序的值,并向调用程序返回更新的值本讲稿第七页,共四十页例:例:不带参数的简单存储过程不带参数的简单存储过程CREATE OR R
6、EPLACE PROCEDURE p ISCREATE OR REPLACE PROCEDURE p ISCREATE OR REPLACE PROCEDURE p ISCREATE OR REPLACE PROCEDURE p IS cursor c is cursor c is cursor c is cursor c is select*from emp where comm is null and sal2000 for select*from emp where comm is null and salv_b)then v_ret:=v_a;else v_ret:=v_b;end i
7、f;v_temp:=v_temp+1;end;本讲稿第十一页,共四十页主程序:主程序:declaredeclare v_a number;v_a number;v_b number;v_b number;v_ret number;v_ret number;v_temp number:=5;v_temp number:=5;beginbegin p1(&v_ap1(&v_a的值的值,&v_b,&v_b的值的值,v_ret,v_temp);,v_ret,v_temp);dbms_output.put_line(v_ret);dbms_output.put_line(v_ret);dbms_outp
8、ut.put_line(v_temp);dbms_output.put_line(v_temp);end;end;本讲稿第十二页,共四十页练一练练一练编写一个存储过程,可以根据用户输入的姓名编写一个存储过程,可以根据用户输入的姓名返回其所在的部门名称以及所在地,使用参数返回其所在的部门名称以及所在地,使用参数传递。传递。在匿名块中调用该过程。在匿名块中调用该过程。本讲稿第十三页,共四十页删除过程删除过程语法语法DROP PROCEDURE procedure_name;DROP PROCEDURE procedure_name;其中,其中,procedure_name procedure_na
9、me 是过程的名称。是过程的名称。示例示例Drop procedure find_emp;Drop procedure find_emp;本讲稿第十四页,共四十页10.2 创建函数创建函数函数是一种数据库对象函数是一种数据库对象,同样也是一个命名的同样也是一个命名的PL/SQLPL/SQL程序块程序块,被存储在数据库中被存储在数据库中,可以被反复的使用可以被反复的使用.函数用来执行复杂的计算,并返回计算的结果。函数用来执行复杂的计算,并返回计算的结果。在调用的时候在调用的时候,可以被作为表达式的一部分。必须要可以被作为表达式的一部分。必须要有返回值。有返回值。这个返回值既可以是这个返回值既可以
10、是numbernumber或或varchar2varchar2这样这样简单的数据类型,也可以是简单的数据类型,也可以是PL/SQLPL/SQL数组或对象这样复数组或对象这样复杂的数据类型。杂的数据类型。本讲稿第十五页,共四十页CREATE OR REPLACE CREATE OR REPLACE FUNCTION function nameFUNCTION function namearg1 IN|OUT|IN OUT arg_type1,arg1 IN|OUT|IN OUT arg_type1,arg2 IN|OUT|IN OUT arg_type2,arg2 IN|OUT|IN OUT a
11、rg_type2,RETURN return_typeRETURN return_typeIS|ASIS|AS声明部分声明部分BEGINBEGIN执行部分执行部分EXCEPTIONEXCEPTION异常处理部分异常处理部分END function name;END function name;其中:其中:RETURNRETURN子句说明函数返回值的数据类型子句说明函数返回值的数据类型。这是与过程。这是与过程的区别之一。的区别之一。本讲稿第十六页,共四十页例:例:create or replace function create or replace function sal_tax(v_sal
12、 number)sal_tax(v_sal number)return number return number is isbeginbegin if v_sal2000 then if v_sal2000 then return 0.10;return 0.10;elsif v_sal2750 then elsif v_salOLD.sal)WHEN(NEW.salOLD.sal)DECLAREDECLARE Sal_diff NUMBER;Sal_diff NUMBER;BEGIN BEGIN sal_diff:=:NEW.sal-:OLD.sal;sal_diff:=:NEW.sal-:
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 10 存储 过程 函数 触发器 精选 文档
限制150内