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_onlyとcountはSPI_execute
と同じ解釈をします。
SPI_execute
と比較して、このルーチンの主たる利点は、データ値を面倒な引用やエスケープを要せずコマンドに埋め込むことができることで、従ってSQLインジェクション攻撃の危険性を軽減します。
後にSPI_execute_plan
が続いたSPI_prepare
でも同様の結果が得られますが、この関数を使用するときには、提供された特定のパラメータ値に対して問い合わせ計画がカスタマイズされます。
1回限りの問い合わせ実行に対しては、この関数を選ぶべきです。
多くの異なったパラメータを持つ同一のコマンドを実行する場合、再計画のコストと独自計画による利益に依存して、どちらか一方の方法がより早くなります。