我在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 ...'; –