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