Redrock Postgres 搜索 英文
版本: 9.3 / 9.4 / 9.5 / 9.6 / 10 / 11 / 12 / 13 / 14 / 15 / 16 / 17

PREPARE

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

概要

PREPARE prepared_name FROM string

描述

PREPARE 准备一条动态指定的语句以供执行,该语句是一个字符串。这与直接 SQL 语句 PREPARE 不同,后者也可以在嵌入式程序中使用。 EXECUTE 命令用于执行这两种准备语句。

参数

prepared_name #

准备查询的标识符。

string #

一个文字字符串或一个包含一个可准备的 SQL 语句的宿主变量,该语句是 SELECT、INSERT、UPDATE 或 DELETE 中的一个。对于准备在执行时提供的参数值,请使用问号 (?)。

注释

在典型用法中,字符串是包含动态构建的 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