SPI_prepare は指定したコマンド用の実行計画を作成し、それを返します。 しかし、そのコマンドは実行しません。 この関数は接続済のプロシージャからのみ呼び出さなければなりません。
同じ、あるいは、類似のコマンドが繰返し実行される場合、一度だけ計画作成を行なう利点があります。 SPI_prepare はコマンド文字列を、SPI_execpを使用して繰返し実行することができる実行計画に変換します。
準備されたコマンドは、通常のコマンドないの定数となる場所を($1、$2などの)パラメータで記述することで一般化することができます。 そしてパラメータの実際の値は、SPI_execp が呼び出される時に指定されます。 これにより、準備されたコマンドは、パラメータがない場合に比べ、より広範な状況で使用できるようになります。
SPI_finishは計画用に割り当てられたメモリを解放しますので、SPI_prepareで返される計画は、そのプロシージャの現在の呼び出し内でのみ使用することができます。 しかし、SPI_saveplan関数を使用して長期間計画を保存することもできます。
SPI_prepareは、実行計画への非ヌルのポインタを返します。 エラーの場合、NULLが返されます。 両方とも、SPI_execの戻り値と似たSPI_resultが設定されます。 しかし、command が NULLの場合やnargsが0未満の場合、nargsが0以上かつargtypes が NULLの場合は、SPI_ERROR_ARGUMENTに設定されます。