它似乎很簡單,但我試圖小時弄明白,但我不能..無法弄清楚如何寫一個簡單的DB2功能
我想創建一個DB2功能,就像聚結。
不同之處在於它尋找第一個參數的值,如果它是一個空字符串,它是''。然後它將使用第二個參數。
這就是我所做的
CREATE FUNCTION COALESCEEMPTY (X1 XML, X2 XML)
RETURNS XML
LANGUAGE SQL
CONTAINS SQL
NO EXTERNAL ACTION
DETERMINISTIC
CASE X1
WHEN '' THEN RETURN X2;
ELSE RETURN X1;
END CASE;
查詢,這是錯誤的代碼,我從DB2獲得。
16:09:47 [CREATE - 0 row(s), 0.000 secs] [Error Code: -104, SQL State: 42601] DB2 SQL Error: SQLCODE=-104, SQLSTATE=42601, SQLERRMC=X1
WHEN '' THEN RETURN X2;ERMINISTIC
CASE;<space>, DRIVER=4.13.127
16:09:47 [ELSE - 0 row(s), 0.000 secs] [Error Code: -104, SQL State: 42601] DB2 SQL Error: SQLCODE=-104, SQLSTATE=42601, SQLERRMC=RETURN;ELSE ;JOIN <joined_table>, DRIVER=4.13.127
16:09:47 [END - 0 row(s), 0.000 secs] [Error Code: -104, SQL State: 42601] DB2 SQL Error: SQLCODE=-104, SQLSTATE=42601, SQLERRMC=END-OF-STATEMENT;END CASE;JOIN <joined_table>, DRIVER=4.13.127
感謝您的幫助。
謝謝..剛試過。 16:30:28 [CREATE - 0 rows,0.000 secs] [錯誤代碼:-104,SQL狀態:42601] DB2 SQL錯誤:SQLCODE = -104,SQLSTATE = 42601,SQLERRMC = CASE;則X2 ELSE X1 END;結束語,驅動程序= 4.13.127 – Larry
我剛剛檢查了DB2語法,並沒有END CASE END(從您的函數複製它),也許這就是問題所在。 – dnoeth
不對。但接近.18:02:17 [CREATE - 0行,0.000秒] [錯誤代碼:-401,SQL狀態:42818] DB2 SQL錯誤:SQLCODE = -401,SQLSTATE = 42818,SQLERRMC = WHEN, DRIVER = 4.13.127 – Larry