Portal SPI_cursor_open(const char * name, SPIPlanPtr plan, Datum * values, const char * nulls, bool read_only)
SPI_cursor_open
は、SPI_prepare
によって準備された計画を実行するカーソル(内部的にはポータル)を設定します。
このパラメータはSPI_execute_plan
の対応するパラメータと同じ意味を持ちます。
計画を直接実行するのではなくカーソルを使用することには2つの利点があります。 1つ目は、結果行を一度に少なく取り出し、多くの行を返す問い合わせでのメモリの過使用を防ぐことができる点です。 2つ目は、ポータルは現在のプロシージャの外部でも有効である点です(実際、現在のトランザクションの終端まで有効とすることができます)。 プロシージャの呼び出し元にportalの名前を返すことで、結果として行セットを返す手段を提供します。
渡されるパラメータデータはカーソルのポータルにコピーされます。 そのため、カーソルが存在している間にそのデータを解放することができます。
ポータルの名前、あるいはシステムに名前を決定させる場合はNULL
(SPI_prepare
で返される)実行計画
実パラメータ値の配列。 計画の引数の数と同じ長さでなければなりません。
どのパラメータがNULLであるかを示す配列。 計画の引数の数と同じ長さでなければなりません。 nはNULL値を表します(values内の項目は無視されます)。 空白は非NULLの値を表します(values内の項目は有効です)。
nullsがNULLの場合、SPI_curcor_open
は全てのパラメータがNULLではないとみなします。
読み取りのみの実行の場合はtrue