我在Teradata中使用立即執行時遇到了問題。在teradata的sql語句中立即執行字符串
SET str_sql = 'UPDATE TABLE
SET COLA = 0';
EXECUTE IMMEDIATE str_sql;
上面的代碼工作正常。
SET str_sql = 'UPDATE TABLE
SET COLA = 0,
COLB = ''test''';
EXECUTE IMMEDIATE str_sql;
上述帶字符串的代碼返回錯誤。
以下是錯誤消息:
Executed as Single statement. Failed [3706 : 42000] Table:Syntax error: expected something between a string or a Unicode character literal and the word 'test'.
Elapsed time = 00:00:00.212
STATEMENT 1: CALL failed.
任何人都知道如何調用與SQL字符串的立即執行? 謝謝!
Frank Liu
你的代碼是正確的,一個字符串中的單引號必須用兩個單引號替換。所以這應該按原樣運行。你能顯示你的確切查詢嗎?還是完整的SP源? – dnoeth
問題解決了。這裏有兩個單引號是正確的。這裏的問題是因爲在sql語句中輸入的。它應該寫在一行中或使用||在不同的行中連接字符串,如set str_sql ='update ....';設置str_sql = str_sql || 'set ...'; –