2024年9月26日:PostgreSQL 17 发布!
支持的版本:当前 (17) / 16 / 15 / 14 / 13 / 12
开发版本:devel
不受支持的版本:11 / 10 / 9.6 / 9.5 / 9.4 / 9.3 / 9.2 / 9.1

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;

兼容性

PREPARE 在 SQL 标准中指定。

另请参见

EXECUTE

提交更正

如果您在文档中看到任何不正确的内容、与您对特定功能的体验不符的内容或需要进一步澄清的内容,请使用 此表单 报告文档问题。