欢迎来到天天文库
浏览记录
ID:51516094
大小:867.86 KB
页数:28页
时间:2020-03-25
《开发子程序和包(修改后).ppt》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、ORACLE数据库查询和管理第10章开发子程序和包程序块的语法结构:数据类型条件控制语句循环结构异常处理内容回顾%type%rowtype%record%tableDECLARE定义部分BEGIN执行部分EXCEPTION异常处理部分END;IF条件表达式1THEN语句段1ELSIF条件表达式2THEN语句段2ELSIF条件表达式3THEN语句段3......ELSIF条件表达式n语句段nENDIF;CASE表达式WHEN条件表达式结果1THEN语句段1;WHEN条件表达式结果2THEN语句段2;......ELSE语句段n;ENDCASE;L
2、OOP语句段;EXIT[WHEN条件表达式]ENDLOOP;WHILE条件表达式LOOP语句段;ENDLOOP;EXCEPTIONWHEN异常错误名称1THEN语句段1;WHEN异常错误名称2THEN语句段2;......WHENOTHERSTHEN语句段3;FOR循环变量in初值表达式..终值表达式LOOP语句段;ENDLOOP;本章内容过程函数程序包本章目标掌握过程的创建与使用掌握函数的创建与使用掌握包的创建与使用1子程序简介子程序是指被命名的PL/SQL块,这种块可以带有参数,可以在不同应用中多次调用,类似于java中的函数PL/SQL有
3、两种类型的子程序:过程和函数过程用于执行特定操作,不返回数据函数则用于返回特定数据2过程过程一般用于执行一个指定的操作,可以将常用的特定操作封装成过程创建过程:CREATE[ORREPLACE]PROCEDUREprocedure_name(argument1[mode1]datatype1,argument2[mode2]datatype2,...)IS[AS]声明部分BEGIN执行部分EXCEPTION异常处理部分END;创建过程:无参数创建一个无参过程,完成修改奖金的操作执行过程的三种方式createtabletb_test(Avarch
4、ar2(10),Bvarchar2(10));insertintotb_testvalues('aa','bb');insertintotb_testvalues('aa','cc');insertintotb_testvalues('bb','cc');insertintotb_testvalues('aa','bb');insertintotb_testvalues('aa','cc');insertintotb_testvalues('bb','cc');select*fromtb_testCREATEORREPLACEPROCEDURE
5、proc_del_dup_recASBEGINDELETETB_TESTaWHEREa.rowid=(SELECTMAX(ROWID)FROMTB_TESTbWHEREa.a=b.aANDa.b=b.b);END;/callproc_del_dup_rec();---------------------------------execproc_del_dup_rec;---------------------------------beginproc_del_dup_rec;end;创建过程:带有IN参数当为过程定义参数时,如果不指定参数模式,
6、则默认为输入参数根据输入的员工编号输出该员工的工资创建过程时,无需为参数指定长度,因为过程中的参数长度最终是由传递给参数的外部数据长度来决定的createorreplaceprocedurepro_query_emp(v_noinemp.empno%type)asv_salemp.sal%type;beginselectsalintov_salfromempwhereempno=v_no;dbms_output.put_line('该员工薪水为:'
7、
8、v_sal);exceptionwhenno_data_foundthendbms_outpu
9、t.put_line('找不到该员工!');end;声明输入参数v_no使用输入参数v_nobeginpro_query_emp(7369);end;创建过程:带有OUT参数过程不仅可以用于执行特定操作,还可以用于输出数据在过程中输出数据时,需要使用OUT或INOUT参数来完成修改刚才的过程让员工工资作为输出参数createorreplaceprocedurepro_query_emp(v_noinemp.empno%type,out_saloutnumber)asbeginselectsalintoout_salfromempwhereemp
10、no=v_no;exceptionwhenno_data_foundthendbms_output.put_line('找不到该员工!');end;声
此文档下载收益归作者所有