[英]DB2 stored proc with Out param always NULL
這是 IBM I 上的 DB2。
我什至嘗試如下初始化 out 參數並得到相同的結果......
CALL SGDEDMGT.USPGETBLAHIDFROMBLAHNUM(
BLAHNO => 'xx#########00000####',
/* IN CHARACTER(20) */
BLAHID => '0' /* OUT INTEGER */
);
這是我回來的結果...
[ 09/09/2022, 03:45:30 PM ] Run All...
CALL SGDEDMGT.USPGETBLAHIDFROMBLAHNUM( BLAHNO =>
'xx#########00000####', BLAHID => '0' )
Return Code = 0
Output Parameter #2 (BLAHID) = <NULL>
Statement ran successfully (141 ms)
我什至用最簡單的格式嘗試了 CALL,如下所示,仍然收到相同的結果......
CALL SGDEDMGT.USPGETBLAHIDFROMBLAHNUM(
'xx#########00000####',?);
我只是不明白為什么我要為 BLAHID 購買 null。
這是我的存儲過程。
CREATE PROCEDURE USPGETBLAHIDFROMBLAHNUM (
IN BLAHNO CHAR(20),
OUT BLAHID INTEGER
)
LANGUAGE SQL
P1 : BEGIN
DECLARE TMPP INTEGER;
SET TMPP = (
SELECT BLAHID
FROM SGDEDMGT.BLAHS
WHERE "BlahNumber" = BLAHNO ) ;
SET BLAHID = TMPP;
END P1
順便說一句,如果有人想知道,我通過做一個簡單的 SELECT 來檢查我的理智,只是為了確保我過濾的測試數據實際上是一個可返回的值:)
在運行 SQL 腳本中,您只需傳遞參數標記, ?
, 進入 output 參數的調用語句..
CALL SGDEDMGT.USPGETBLAHIDFROMBLAHNUM(
BLAHNO => 'xx#########00000####',
/* IN CHARACTER(20) */
BLAHID => ? /* OUT INTEGER */
);
--with positional parms
CALL SGDEDMGT.USPGETBLAHIDFROMBLAHNUM('xx#########00000####', ?);
我發現了我的問題。 沒有真正注意是我的錯。 在我的創建過程示例的第 9 行中,“SELECT BLAHID”(注意,它不是真正的列名,我為含糊而道歉),問題本身就是 BLAHID。 它應該是 BlahId,因為實際的列名超過 6 個字符,所以應該用雙引號括起來,如“BlahId”。 為什么 RUN SQL SCRIPT 工具或編譯后顯示有關列名 BLAHID 不存在的任何錯誤是一個嚴重的奇跡,這給了我准確的錯覺,因此,四處奔波追逐自己的尾巴。 感謝所有花時間幫助我解決問題的人。 非常感激!
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.