Postgresql 中文操作指南

PREPARE

PREPARE — 准备一个待执行的语句

Synopsis

PREPARE prepared_name FROM string

Description

PREPARE 为作为动态指定的字符串准备一个待执行的语句。这不同于直接 SQL 语句 PREPARE ,也可以在嵌入式程序中使用。 EXECUTE 命令用于执行任一类型的已准备语句。

Parameters

  • prepared_name #

    • 已准备查询的标识符。

  • string #

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

Notes

在典型用法中, string 是对包含动态构造的 SQL 语句的字符串的主机变量引用。文字字符串的情况没有什么用,你不仅可以通过编写直接的 SQL PREPARE 语句来解决。

如果你确实使用文字字符串,请记住你可能希望包含在 SQL 语句中的任何双引号必须写成八进制转义字符 ( \042 ),而不是通常的 C 惯用法 \" 。这是因为字符串位于 EXEC SQL 部分中,因此 ECPG 词法分析器根据 SQL 规则而不是 C 规则对其进行解析。任何嵌入的反斜杠都会根据 C 规则得到处理;但 \" 会引起立即的语法错误,因为它被视为结束的文字。

Examples

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;

Compatibility

PREPARE 在 SQL 标准中指定。

See Also