2014-07-02 80 views
0

我在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

+1

你的代碼是正確的,一個字符串中的單引號必須用兩個單引號替換。所以這應該按原樣運行。你能顯示你的確切查詢嗎?還是完整的SP源? – dnoeth

+1

問題解決了。這裏有兩個單引號是正確的。這裏的問題是因爲在sql語句中輸入的。它應該寫在一行中或使用||在不同的行中連接字符串,如set str_sql ='update ....';設置str_sql = str_sql || 'set ...'; –

回答

0

問題可能出在報價上。而不是此

SET str_sql = 'UPDATE TABLE 
       SET COLA = 0, 
        COLB = ''test'''; 
EXECUTE IMMEDIATE str_sql; 

使用雙引號。

SET str_sql = 'UPDATE TABLE 
       SET COLA = 0, 
        COLB = 'test''; 
EXECUTE IMMEDIATE str_sql; 
+0

我對這種編程語言並不熟悉,但我會猜想,雙引號str_sql變量或轉義單引號本來就是要走的路。 –

+0

雙引號不起作用。 –

+0

試過扭轉報價?單詞'test'中的雙引號在單引號之外。嘗試了 – Charlesliam