★PostgreSQLカンファレンス2024 12月6日開催/チケット販売中★
他のバージョンの文書 16 | 15 | 14 | 13 | 12 | 11 | 10 | 9.6 | 9.5 | 9.4 | 9.3 | 9.2 | 9.1 | 9.0 | 8.4 | 8.3 | 8.2 | 8.1 | 8.0 | 7.4 | 7.3 | 7.2

PREPARE

PREPARE — 実行のためにSQL文をプリペアします。

概要

PREPARE prepared_name FROM string

説明

PREPAREは実行用に文字列として動的に指定されたSQL文をプリペアします。 これは、埋め込みプログラム内でも使用することができる、直接的なPREPARE SQL文とは異なります。 EXECUTEコマンドを使用して、どちらの種類のプリペアド文を実行することができます。

パラメータ

prepared_name #

プリペアド問い合わせ用の識別子です。

string #

リテラル文字列、または、プリペア可能なSQL文であるSELECT/INSERT/UPDATE/DELETEの1つを含むホスト変数、のいずれかです。 実行時に提供されるパラメータ値には疑問符(?)を使ってください。

注釈

典型的な使い方では、stringは動的に構成されたSQL文を含む文字列へのホスト変数参照です。 リテラル文字列の場合はあまり有用ではありません。単に直接SQL PREPARE文を書くこともできるからです。

どうしてもリテラル文字列を使う場合には、SQL文に含める二重引用符は、通常のCのイディオムである\"ではなく、8進エスケープ(\042)として書かなければならないことを心に留めておいてください。 これは文字列がEXEC SQL内にあるからで、そのためECPG字句解析器はCの規則ではなくSQLの規則に従って解析します。 埋め込まれたバックスラッシュは後で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