广州明生医药有限公司


PL / SQL 存储过程

网络编程 PL / SQL 存储过程 09-19

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  mBEGIN     -- 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; / 

编辑:广州明生医药有限公司

标签:存储过程,参数,可选,括号,函数