2025年9月25日: PostgreSQL 18 釋出!
支援的版本:當前 (18) / 17 / 16 / 15 / 14 / 13
開發版本:devel
不支援的版本:12 / 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

提交更正

如果您在文件中發現任何不正確、與您對特定功能的體驗不符或需要進一步澄清的內容,請使用 此表格 來報告文件問題。