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;
EXECUTE IMMEDIATE
是在 SQL 标准中指定的。
如果您在文档中发现任何不正确、与您使用特定功能时的体验不符或需要进一步说明的内容,请使用 此表单 报告文档问题。