★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

SPI_execute_with_args

名前

SPI_execute_with_args -- 行外のパラメータを持つコマンドを実行する

概要

int SPI_execute_with_args(const char *command,
                          int nargs, Oid *argtypes,
                          Datum *values, const char *nulls,
                          bool read_only, long count)

説明

SPI_execute_with_argsは外部から供給されるパラメータへの参照を含むコマンドを実行します。 コマンドテキストはパラメータを$nとして参照し、呼び出しはこうしたシンボル毎にデータ型と値を指定します。 read_onlycountSPI_executeと同じ解釈をします。

SPI_executeと比較して、このルーチンの主たる利点は、データ値を面倒な引用やエスケープを要せずコマンドに埋め込むことができることで、従ってSQLインジェクション攻撃の危険性を軽減します。

後にSPI_execute_planが続いたSPI_prepareでも同様の結果が得られますが、この関数を使用するときには、提供された特定のパラメータ値に対して問い合わせ計画が必ずカスタマイズされます。 1回限りの問い合わせ実行に対しては、この関数を選ぶべきです。 多くの異なったパラメータを持つ同一のコマンドを実行する場合、再計画のコストと独自計画による利益に依存して、どちらか一方の方法がより早くなります。

引数

const char * command

コマンド文字列

int nargs

$1$2など)入力パラメータの数

Oid * argtypes

パラメータのデータ型のOIDを含む配列

Datum * values

実パラメータ値の配列

const char * nulls

どのパラメータがnullかを記述する配列

nullsNULLであれば、SPI_execute_with_argsはどのパラメータもnullでないと看做す

bool read_only

読み取りのみの実行の場合true

long count

返される行の最大数。無制限なら0。

Return Value

戻り値はSPI_executeと同じです。

成功した場合SPI_processedSPI_tuptableSPI_executeと同様に設定されます。