一存储过程PROCEDURE使用过程不仅可以简化客户端应用程序的开发和维护而且可以提高应用程序的运行性能CREATEORREPLACEPROCUDUREprocedure_
amearg1model1datatype1arg2model2datatype2ISASPLSQLBlockarg1arg2用于指定过程的参数ISAS用于开始一个PLSQL块当指定参数数据类型时不能指定其长度在建立过程的时间既可以指定输入参数IN也可以指定输出参数OUT以及输入输出参数INOUT如果不定义参数模式则默认为输入参数如果要定义输出参数则需要指定OUT关键字如果定义输入输出参数要指定INOUT关键字一般使用execute或exec过程名或者call过程名来调用过程setserveroutputo
打开oracle的输出1不带参数的过程CREATEORREPLACEPROCEDUREout_timeISBEGINdbms_outputput_li
esystimestampENDcallout_time或者execout_time2带IN参数的过程如果不指定参数模式则默认的为IN也可以显示的指定输入模式INCREATEORREPLACEPROCEDUREadd_employeee
oNUMBER
ameVARCHAR2salNUMBERjobVARCHAR2DEFAULTCCCd
oNUMBERISBEGININSERTINTOempemp
oe
amesaljobdept
oVALUESe
oe
amesaljobd
oEXCEPTIONWHENDUP_VAL_ON_INDEXTHENRAISE_APPLICATION_ERROR20000雇员不能重复END除了默认值的参数外其余的都要输入3带OUT的过程在过程中输出结果是使用OUT或者INOUT来完成的定义输出参数的时间必须要使用OUT来定义输出CREATEORREPLACEPROCEDUREquery_employeee
oNUMBER
ameOUTVARCHAR2salOUTNUMBERISBEGINSELECTe
amesalINTO
amesalFROMempWHEREemp
oe
o
fEXCEPTIONWHENNO_DATA_FOUNDTHENRAISE_APPLICATION_ERROR20000雇员不存在END对于指定为OUT类型的参数必须定义变量接收输出参数的数据调用实例SQLvar
ameVARCHAR210SQLvarsalNUMBERSQLexecquery_employee77
amesalSQLpri
t
amesal4带IN和OUT的过程在调用前要通过变量给参数传递数据在调用结束后会通过此变量将值传递给应用程序CREATEORPROCEDUREcompute
umINOUTNUMBER
um2INOUTNUMBERISv1NUMBERv2NUMBERBEGINv1
um1
um2v2MOD
um1
um2
um1v1
um2v2END在应用程序调用INOUT的存储过程时必须提供两个变量临时存放数值运行如下SQLvar
1NUMBERSQLvar
2NUMBERSQLexec
1100SQLexec
230SQLexeccompute
1
2SQLPRINT
1
25为参数传递变量和数据1位置传递如SQLexecadd_dept50SALESNEWYORK2名称传递使用符号来指定值如SQLexecadd_deptd
o503组合传递以上两种传递方法交替6查看过程的源代码过程名源代码执行代码放到了数据字典中通过查询数据字典USER_SOURCE可以显示当前用户定义的过程SELECTtextFROMuser_sourceWHERE
ameADD_DEPTr