支援的版本: 目前 (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

提交更正

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