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

PREPARE

PREPARE — 准备一条语句以供执行

Synopsis

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;

兼容性

PREPARE 在 SQL 标准中有规定。

另请参阅

EXECUTE