-1
這是我的存儲過程:的Oracle存儲過程的Varchar 3個字符的限制
CREATE OR REPLACE
PROCEDURE "YOUQI_SP"
(
INPUT1 IN VARCHAR2,
INPUT2 IN VARCHAR2,
OUTPUT1 OUT VARCHAR2
)
AS
BEGIN
OUTPUT1 := INPUT1 || INPUT2;
DBMS_OUTPUT.PUT_LINE('INPUT1 : ' || INPUT1);
DBMS_OUTPUT.PUT_LINE('INPUT2 : ' || INPUT2);
DBMS_OUTPUT.PUT_LINE('OUTPUT1 : ' || OUTPUT1);
END YOUQI_SP;
有執行沒問題:BEGIN YOUQI_SP('a', 'bc', :output1); END;
。這裏的結果:
Array
(
[output1] => abc
)
Array
(
[0] => INPUT1 : a
[1] => INPUT2 : bc
[2] => OUTPUT1 : abc
)
但是,如果我添加一個或多個字符來輸入,我會收到錯誤:
[code] => 6502
[message] => ORA-06502: PL/SQL: numeric or value error: character string buffer too small ORA-06512: at "YOUQI_SP", line 9 ORA-06512: at line 1
這進一步通過直接OUTPUT1
分配變量證明。它只能保存最多3個字符。任何想法如何讓它返回超過3個字符?謝謝!
您可以發佈您用來調用過程的完整代碼,並確定您從中調用它的環境。 – 2013-03-14 11:39:35
OUT參數是調用中的變量,即客戶端環境中的變量。所以錯誤在那裏,而不是你發佈的代碼中。 – APC 2013-03-14 12:58:21