PL / SQL存儲過程不返回值。他們執行他們的指示并返回。您不能在賦值語句(如函數)的右側使用存儲過程。
創建存儲過程
以下代碼是一個非常簡單的存儲過程示例。
它基于SYS.DBMS_LOCK包的程序sleep(數量)。
此存儲過程將停止執行指定的秒數。
CREATE OR REPLACE PROCEDURE wait( ain_seconds IN number) is
begin -- w ww .j a va2 s .co mSYS.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 mSYS.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;
/
?CSDN:程序猿 寄語:
1、作為一個真正的程序員,首先應該尊重編程,熱愛你所寫下的程序,他是你的伙伴,而不是工具。
2、程序員可以讓步,卻不可以退縮,可以羞澀,卻不可以軟弱,總之,程序員必須是勇敢的。
3、編程是一種單調的生活,因此程序員比普通人需要更多的關懷,更多的友情。
4、程序不是年輕的專利,但是,他屬于年輕。
5、沒有情調,不懂浪漫,也許這是程序員的一面,但擁有樸實無華的愛是他們的另一面。
6、一個好漢三個幫,程序員同樣如此。