Oracle存儲過程in、out、in out 模式參數


1、in模式參數 
輸入模式的參數,用於接收參數,在子程序內部,不能進行修改。默認的參數模式:in。

--定義打印的存儲過程
CREATE OR REPLACE PROCEDURE println (str VARCHAR)
AS
BEGIN
  dbms_output.put_line(str);
END;
--定義測試in模式的存儲過程
CREATE OR REPLACE PROCEDURE pro(p1 IN INT,p2 IN INT)--參數的個數、類型可以自定義,但是參數不允許指定長度
AS
BEGIN
  println(p1);
  println(p2);
  --p2:=11; --in模式參數不能為其賦值
END;

--通過語句塊調用存儲過程
BEGIN
  pro(10,100);
END;

2、out模式參數 
輸出模式的參數,用於輸出值,會忽略傳入的值。在子程序內部可以對其進行修改。 
輸出:子程序執行完畢后,out模式參數最終的值會賦值給調用時對應的<實參變量>。 
注意:out模式參數的調用,必須通過變量。

--測試out模式的存儲過程
CREATE OR REPLACE PROCEDURE pro(p3 OUT INT)
AS
BEGIN
  println(p3);--p3會忽略傳入的值
  p3:=33;--設定存儲過程調用后的值
END;

DECLARE
var3 INT :=30;--聲明一個變量用於設定存儲過程調用前的值
BEGIN
-- pro(30); --error,20對應過程中out模式的參數,out會輸出結果給調用的實參,但是20不能作為賦值目標
println('存儲過程調用前的值:'||var3);
pro(var3);--調用pro存儲過程重新賦值;調用過程,如果過程形參是out模式,必須采用變量實參
println('存儲過程調用后的值:'||var3);
END;

3、in out 模式參數 
輸入輸出模式:能接收傳入的實參值;在子程序內部可以修改; 可以輸出(必須用實參變量調用)

--測試in out模式的存儲過程
CREATE OR REPLACE PROCEDURE pro(p4 IN OUT INT)
AS
BEGIN
  println(p4);
  p4:=44;--in out模式參數的值可以修改
END;

DECLARE
age INT :=40;--聲明一個變量用於設定存儲過程調用前的值
BEGIN
println('存儲過程調用前的值:'||age);
pro(age);--調用pro存儲過程重新賦值
println('存儲過程調用后的值:'||age);
END;

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM