↑↓ 选择↵ 打开⌫ 切换范围完整搜索

PG.CENTER 连接 PostgreSQL 文档、百科与生态知识。由 Pigsty 维护。

支持中的版本: 当前版本 (18) / 17 / 16 / 15 / 14
开发中的版本: 19 / 20devel
已结束支持的版本: 13 / 12 / 11 / 10 / 9.6 / 9.5 / 9.4 / 9.3 / 9.2 / 9.1
预发布版本文档。 PostgreSQL 19beta4 为测试版本,最终发布内容可能有所不同。

PREPARE

PREPARE — 预备一个语句以供执行

大纲

PREPARE prepared_name FROM string

描述

PREPARE 预备一个以字符串动态指定的语句,以供执行。这不同于直接的 SQL 语句 PREPARE,后者也可用于嵌入式程序。EXECUTE 命令可用于执行任一种预备语句。

参数

prepared_name #

预备查询的一个标识符。

string #

包含可预备 SQL 语句的字符串字面量或主变量,语句可以是 SELECT、INSERT、UPDATE 或 DELETE。对于执行时提供的参数值,使用问号(?)。

注解

在典型用法中,string 是一个主变量引用,指向包含动态构造 SQL 语句的字符串。直接使用字符串常量通常并不太有用;你也可以直接写一条 SQL PREPARE 语句。

如果使用字符串字面量,请注意,要在 SQL 语句中包含的双引号必须写为八进制转义(\042),而不是通常的 C 写法\"。这是因为字符串位于 EXEC SQL 段中,ECPG 词法分析器会按照 SQL 规则而非 C 规则解析它。内嵌的反斜杠随后会按照 C 规则处理;但\" 会被视为字面量的结束,因此会立即引起语法错误。

示例

char *stmt = "SELECT * FROM test1 WHERE a = ? AND b = ?";

EXEC SQL ALLOCATE DESCRIPTOR outdesc;
EXEC SQL PREPARE foo FROM :stmt;

EXEC SQL EXECUTE foo USING SQL DESCRIPTOR indesc INTO SQL DESCRIPTOR outdesc;

兼容性

SQL 标准中说明了 PREPARE。

另见

EXECUTE

报告文档问题

阅读 上游文档. 反馈更正前请先核对 当前版本手册.