在 teradata 的 sql 语句中使用字符串立即执行
Posted
技术标签:
【中文标题】在 teradata 的 sql 语句中使用字符串立即执行【英文标题】:execute immediate with string in sql statement in teradata 【发布时间】:2014-07-02 02:25:33 【问题描述】:我在 Teradata 中使用立即执行时遇到了问题。
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 中使用 String 调用执行立即数吗? 谢谢!
弗兰克·刘
【问题讨论】:
您的代码是正确的,字符串中的单引号必须替换为两个单引号。所以这应该按原样运行。你能显示你的确切查询吗?还是完整的 SP 源? 问题已解决。它的两个单引号在这里是正确的。这里的问题是因为 sql 语句中的输入。它应该写在一行中或使用 ||连接不同行中的字符串,例如 set str_sql = 'update .... ';设置 str_sql = str_sql || '设置...'; 【参考方案1】:问题可能出在报价单上。而不是这个
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;
【讨论】:
我不熟悉这种编程语言,但我猜双引号 str_sql 变量或转义单引号会是要走的路。 试过颠倒引号吗?双引号在单词test
的外部和单引号内。
试过了,但是看起来 teradata 只支持字符串的单引号。以上是关于在 teradata 的 sql 语句中使用字符串立即执行的主要内容,如果未能解决你的问题,请参考以下文章
如何在(Teradata)仅使用 ANSI SQL 时实现重置?
在 Teradata 中创建具有“with recursive”语句的递归视图
如何在 Teradata SQL 中使用 LEFT JOIN 对查询中的非聚合参数进行 GROUP BY?
Teradata 工具使用SQL Assistant连接每次都需要重新输入口令