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 标准中被指定。