存储过程和函数.ppt

存储过程和函数.ppt

ID:50192288

大小:314.00 KB

页数:33页

时间:2020-03-06

存储过程和函数.ppt_第1页
存储过程和函数.ppt_第2页
存储过程和函数.ppt_第3页
存储过程和函数.ppt_第4页
存储过程和函数.ppt_第5页
资源描述:

《存储过程和函数.ppt》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库

1、存储过程、函数主要内容存储过程函数包存储子程序存储子程序是被命名的PL/SQL块,以编译的形式存储在数据库服务器中,可以在应用程序中进行调用,是PL/SQL程序模块化的一种体现。PL/SQL中的存储子程序包括存储过程和(存储)函数两种。创建存储过程图形工具OEM创建CREATE[ORREPLACE]PROCEDURE过程名(参数名in

2、out

3、inout数据类型[:=初始值],参数名in

4、out

5、inout数据类型[:=初始值],…参数名in

6、out

7、inout数据类型[:=初始值])IS

8、AS[<局部变量声明>]BEGIN<过程体>EXCEPTION<异常

9、处理>END[<过程名>];参数的模式IN(默认参数模式)表示当过程被调用时,实参值被传递给形参;在过程内,形参起常量作用,只能读该参数,而不能修改该参数。OUT:在过程内,形参起未初始化的PL/SQL变量的作用,初始值为NULL,可以进行读/写操作。INOUT表示当过程被调用时,实参值被传递给形参;在过程内,形参起已初始化的PL/SQL变量的作用,可读可写。参数的限制在声明形参时,不能定义形参的长度或精度、刻度,它们是作为参数传递机制的一部分被传递的,是由实参决定的。参数传递方式当子程序被调用时,实参与形参之间值的传递方式取决于参数的模式。IN参数为引用传

10、递,即实参的指针被传递给形参;OUT,INOUT参数为值传递,即实参的值被复制给形参。参数默认值可以为参数设置默认值,这样存储过程被调用时如果没有给该参数传递值,则采用默认值。需要注意,有默认值的参数应该放在参数列表的最后。简单存储过程Createorreplaceprocedurep_helloAsBegindbms_output.put_line(‘helloworld!’);End;Createorreplaceprocedureshow_empAsv_salemp.sal%type;beginSELECTavg(sal)INTOv_salFROMem

11、pWHEREdeptno=10;DBMS_OUTPUT.PUT_LINE(

12、'averagesalaryis:'

13、

14、v_sal);FORv_empIN(SELECT*FROMempWHEREdeptno=10ANDsal>v_sal)LOOPDBMS_OUTPUT.PUT_LINE(v_emp.empno

15、

16、''

17、

18、v_emp.ename);ENDLOOP;EXCEPTIONWHENNO_DATA_FOUNDTHENDBMS_OUTPUT.PUT_LINE('Thedepartmentdoesn’’texists!');End;带输入参数的存储过程Creat

19、eorreplaceprocedureshow_emp(p_deptnoemp.deptno%type)Asv_salemp.sal%type;beginSELECTavg(sal)INTOv_salFROMempWHEREdeptno=p_deptno;DBMS_OUTPUT.PUT_LINE(

20、'averagesalaryis:'

21、

22、v_sal);FORv_empIN(SELECT*FROMempWHEREdeptno=p_deptnoANDsal>v_sal)LOOPDBMS_OUTPUT.PUT_LINE(v_emp.empno

23、

24、''

25、

26、v_emp

27、.ename);ENDLOOP;EXCEPTIONWHENNO_DATA_FOUNDTHENDBMS_OUTPUT.PUT_LINE('Thedepartmentdoesn’’texists!');End;带输出参数的过程CREATEORREPLACEPROCEDUREreturn_deptinfo(p_deptnoemp.deptno%TYPE,p_avgsalOUTemp.sal%TYPE,p_countOUTemp.sal%TYPE)ASBEGINSELECTavg(sal),count(*)INTOp_avgsal,p_countFROMempWHE

28、REdeptno=p_deptno;EXCEPTIONWHENNO_DATA_FOUNDTHENDBMS_OUTPUT.PUT_LINE('Thedepartmentdon’’texists!');END;存储过程的调用在sqlplus中调用:execute过程名(参数1,参数2,…)在程序中调用:过程名(参数1,参数2,…);DECLAREv_avgsalemp.sal%TYPE;v_countNUMBER;BEGINshow_emp(20);return_deptinfo(10,v_avgsal,v_count);DBMS_OUTPUT.PUT_LINE

29、(v_avgsal

30、

31、''

32、

33、v_count);EN

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。