PostgreSQL 中文参考文档
🌐 英文原版 官方 ↗

EXECUTE IMMEDIATE

EXECUTE IMMEDIATE — 动态准备并执行一条语句

Synopsis

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