
版權聲明:本文為博主原創文章,未經博主允許不得轉載。
1、in模式參數
輸入模式的參數,用於接收參數,在子程序內部,不能進行修改。默認的參數模式:in。
--定義打印的存儲過程
CREATE OR REPLACE PROCEDURE println (str VARCHAR) AS BEGIN dbms_output.put_line(str); END;
- 1
- 2
- 3
- 4
- 5
- 6
--定義測試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;
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
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;
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
3、in out 模式參數
輸入輸出模式:能接收傳入的實參值;在子程序內部可以修改; 可以輸出(必須用實參變量調用)
--測試in out模式的存儲過程 CREATE OR REPLACE PROCEDURE pro(p4 IN OUT INT) AS BEGIN println(p4); p4:=44;--in out模式參數的值可以修改 END; DECLARE var4 INT :=40;--聲明一個變量用於設定存儲過程調用前的值 BEGIN println('存儲過程調用前的值:'||var4); pro(var4);--調用pro存儲過程重新賦值 println('存儲過程調用后的值:'||var4); END;
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15