SPI_cursor_open — SPI_prepare
で作成された文を使用したカーソルを設定する
Portal SPI_cursor_open(const char *name
, SPIPlanPtrplan
, Datum *values
, const char *nulls
, boolread_only
)
SPI_cursor_open
は、SPI_prepare
によって準備された文を実行するカーソル(内部的にはポータル)を設定します。
このパラメータはSPI_execute_plan
の対応するパラメータと同じ意味を持ちます。
文を直接実行するのではなくカーソルを使用することには2つの利点があります。 1つ目は、結果行を一度に少なく取り出し、多くの行を返す問い合わせでのメモリの過使用を防ぐことができる点です。 2つ目は、ポータルは現在のC関数の外部でも有効である点です(実際、現在のトランザクションの終端まで有効とすることができます)。 C関数の呼び出し元にポータルの名前を返すことで、結果として行セットを返す手段を提供します。
渡されるパラメータデータはカーソルのポータルにコピーされます。 そのため、カーソルが存在している間にそのデータを解放することができます。
const char * name
ポータルの名前、あるいはシステムに名前を決定させる場合はNULL
SPIPlanPtr plan
(SPI_prepare
で返される)準備済み文
Datum * values
実パラメータ値の配列。 文の引数の数と同じ長さでなければなりません。
const char * nulls
どのパラメータがNULLであるかを示す配列。 文の引数の数と同じ長さでなければなりません。
nulls
がNULL
の場合、SPI_cursor_open
は全てのパラメータがNULLではないとみなします。
さもなければ、nulls
配列の各項目は、対応するパラメータが非NULLならば' '
、対応するパラメータがNULLならば'n'
です。
(後者の場合、values
内の対応する値は注意されません。)
nulls
はテキスト文字列ではなく単なる配列であることに注意してください。
'\0'
終端は必要ありません。
bool read_only
読み取りのみの実行の場合true
カーソルを含むポータルへのポインタ。
戻り値の規約にはエラーを表すものがないことに注意してください。
エラーはすべてelog
経由で報告されます。