登录
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;
兼容性
EXECUTE IMMEDIATE
在 SQL 标准中指定。