EXECUTE IMMEDIATE
EXECUTE IMMEDIATE — 动态地预备并执行一个语句
大纲
EXECUTE IMMEDIATE string
描述
EXECUTE IMMEDIATE 立刻预备并且执行一个动态指定的 SQL 语句,不检索结果行。
参数
string#包含待执行 SQL 语句的字符串字面量或主变量。
注解
在典型用法中,string 是一个主变量引用,指向包含动态构造 SQL 语句的字符串。直接使用字符串常量通常并不太有用,因为那样你也可以直接写 SQL 语句,而无需借助 EXECUTE IMMEDIATE。
如果使用字符串字面量,请注意,要在 SQL 语句中包含的双引号必须写为八进制转义(\042),而不是通常的 C 写法\"。这是因为字符串位于 EXEC SQL 段中,ECPG 词法分析器会按照 SQL 规则而非 C 规则解析它。内嵌的反斜杠随后会按照 C 规则处理;但\" 会被视为字面量的结束,因此会立即引起语法错误。
示例
这里是一个用 EXECUTE IMMEDIATE 和一个名为 command 的主变量执行 INSERT 语句的例子:
sprintf(command, "INSERT INTO test (name, amount, letter) VALUES ('db: ''r1''', 1, 'f')");
EXEC SQL EXECUTE IMMEDIATE :command;
兼容性
SQL 标准中说明了 EXECUTE IMMEDIATE。
报告文档问题
阅读 上游文档. 通过 PostgreSQL 文档反馈表单.