PL / SQL存储过程不返回值。他们执行他们的指示并返回。您不能在赋值语句(如函数)的右侧使用存储过程。
创建存储过程
以下代码是一个非常简单的存储过程示例。
它基于SYS.DBMS_LOCK包的程序sleep(数量)。
此存储过程将停止执行指定的秒数。
CREATE OR REPLACE PROCEDURE wait( ain_seconds IN number) is begin -- w ww .j a va2 s .co m SYS.DBMS_LOCK.sleep(ain_seconds); end wait; / declare v_max_line varchar2(32767); begin wait(2); end; /
注意
创建存储过程的语法如下:
CREATE [OR REPLACE] PROCEDURE <procedure_name> [( <parameter_name_1> [IN] [OUT] <parameter_data_type_1>, <parameter_name_2> [IN] [OUT] <parameter_data_type_2>,... <parameter_name_N> [IN] [OUT] <parameter_data_type_N> )] IS --the declaration section -- w ww .j a va2s .c o m BEGIN -- the executable section EXCEPTION -- the exception-handling section END; /
<procedure_name>是PROCEDURE的名称; <parameter_name>是要传递的参数的名称IN,OUT或IN,OUT <parameter_data_type>是相应参数的PL / SQL数据类型。
注意2
关键字OR REPLACE周围的括号表示它们是可选的。
参数的括号表示它们是可选的。
PROCEDURE的块结构与匿名块相同,除了CREATE PROCEDURE关键字和可选参数。
存储过程不同于函数,因为它没有RETURN参数。
实例2
以下代码为SYS.DBMS_OUTPUT.put_line()创建一个warpper。
create or replace PROCEDURE pl( aiv_text in varchar2 ) is begin -- www . jav a2 s . c o m SYS.DBMS_OUTPUT.put_line(aiv_text); end pl; / declare v_max_line varchar2(32767); begin for i in 1..10 loop v_max_line := v_max_line || ' a'; end loop; pl('Test a line of text.'); pl(to_date('20200101', 'YYYYMMDD')); end; /
查看更多关于Oracle PL / SQL 存储过程的详细内容...
声明:本文来自网络,不代表【好得很程序员自学网】立场,转载请注明出处:http://haodehen.cn/did225659