我正在寫一個使用OCI調用存儲過程的C++程序。在我的PL/SQL存儲過程測試中,如果沒有初始化一個出站變量,我可能會得到"fetched column value is NULL"錯誤,因爲在foo != 0
的情況下,bar是NULL。所以在第一行中,我首先初始化欄。這是處理出站變量的正確方法嗎?PL/SQL初始化出站變量?
FUNCTION function1(
foo IN INTEGER,
bar OUT VARCHAR2
) RETURN INTEGER
IS
ret INTEGER;
BEGIN
bar := ' '; -- do I need to initialize this variable?
IF foo = 0 THEN
ret := 0;
bar := 'a';
ELSE
ret := 1;
END IF;
RETURN ret;
END function1;
當你的函數中沒有'select'(即'fetch')時,你如何獲得一個'fetched column value Null'錯誤?和'bar:='';'不是必需的,但是你可以將它作爲'bar:= NULL;' – Annjawn 2012-08-16 16:21:39
在C++中執行的sql命令看起來像是'BEGIN \ n:ret:= function1(:foo,:bar ); END;'即使沒有選擇語句,它也會出錯。我再次測試它,做'bar:= NULL;'也會導致同樣的錯誤! – Stan 2012-08-16 16:51:49
你有沒有嘗試初始化變量,如上面的代碼所示,並且這樣做是否消除了錯誤? – 2012-08-16 17:13:56