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回限りの問い合わせ実行に対しては、この関数を選ぶべきです。多くの異なったパラメータを持つ同一のコマンドが実行されると、再計画対独自計画による利益のコストに依存して、どちらか一方の方法がより早くなります。