受支持版本: 当前版本 (18) / 17 / 16 / 15 / 14
开发版本: devel

EXECUTE IMMEDIATE

EXECUTE IMMEDIATE — 动态地准备和执行一个语句

Synopsis

EXECUTE IMMEDIATE string

描述

EXECUTE IMMEDIATE立刻预备并且执行一个动态指定的 SQL 语句,不检索结果行。

参数

string #

包含要被执行的 SQL 语句的一个字符串或者是一个主变量。

Notes

在典型用法中,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

提交更正

如果您发现文档中有不正确的内容、与您使用特定功能的经验不符或需要进一步说明,请使用此表单来报告文档问题。