在Oracle中,存儲過程是一種用于封裝和重復使用SQL代碼的對象
IN參數:這些參數用于將數據從調用程序傳遞到存儲過程。在存儲過程內部,IN參數的值是只讀的,不能被修改。
OUT參數:這些參數用于將數據從存儲過程返回給調用程序。OUT參數在存儲過程內部可以被賦值,調用程序可以獲取這些值。
IN OUT參數:這些參數既可以將數據從調用程序傳遞到存儲過程,也可以將數據從存儲過程返回給調用程序。IN OUT參數在存儲過程內部可以被賦值,調用程序可以獲取這些值。
以下是一個簡單的Oracle存儲過程示例,演示了如何使用IN、OUT和IN OUT參數:
CREATE OR REPLACE PROCEDURE my_procedure (
p_in IN NUMBER,
p_out OUT NUMBER,
p_in_out IN OUT NUMBER
) AS
BEGIN
-- 使用IN參數
DBMS_OUTPUT.PUT_LINE('p_in: ' || p_in);
-- 為OUT參數賦值
p_out := p_in * 2;
-- 修改IN OUT參數的值
p_in_out := p_in_out + 5;
END;
/
要調用此存儲過程并傳遞參數,可以使用以下匿名PL/SQL塊:
DECLARE
v_in NUMBER := 10;
v_out NUMBER;
v_in_out NUMBER := 5;
BEGIN
my_procedure(v_in, v_out, v_in_out);
-- 輸出OUT參數的值
DBMS_OUTPUT.PUT_LINE('v_out: ' || v_out);
-- 輸出IN OUT參數的值
DBMS_OUTPUT.PUT_LINE('v_in_out: ' || v_in_out);
END;
/
運行此匿名PL/SQL塊后,將看到以下輸出:
p_in: 10
v_out: 20
v_in_out: 15
這說明了如何在Oracle存儲過程中使用IN、OUT和IN OUT參數進行參數傳遞。