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
。