支持的版本: 当前 (17) / 16 / 15 / 14 / 13
开发版本: devel
不支持的版本: 12 / 11 / 10 / 9.6 / 9.5 / 9.4 / 9.3 / 9.2 / 9.1

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

提交更正

如果您发现文档中有任何不正确、与您使用特定功能的经验不符或需要进一步澄清的地方,请使用此表单报告文档问题。