バージョンごとのドキュメント一覧

SPI_cursor_open

SPI_cursor_open <refpurpose>set up a cursor using a statement created with <function>SPI_prepare</function></refpurpose> SPI_prepareで作成された文を使用したカーソルを設定する

概要

Portal SPI_cursor_open(const char * name, SPIPlanPtr plan,
                       Datum * values, const char * nulls,
                       bool read_only)

説明

<title>Description</title>

<function>SPI_cursor_open</function> sets up a cursor (internally, a portal) that will execute a statement prepared by <function>SPI_prepare</function>. The parameters have the same meanings as the corresponding parameters to <function>SPI_execute_plan</function>. SPI_cursor_openは、SPI_prepareによって準備された文を実行するカーソル(内部的にはポータル)を設定します。 このパラメータはSPI_execute_planの対応するパラメータと同じ意味を持ちます。

Using a cursor instead of executing the statement directly has two benefits. First, the result rows can be retrieved a few at a time, avoiding memory overrun for queries that return many rows. Second, a portal can outlive the current C function (it can, in fact, live to the end of the current transaction). Returning the portal name to the C function's caller provides a way of returning a row set as result. 文を直接実行するのではなくカーソルを使用することには2つの利点があります。 1つ目は、結果行を一度に少なく取り出し、多くの行を返す問い合わせでのメモリの過使用を防ぐことができる点です。 2つ目は、ポータルは現在のC関数の外部でも有効である点です(実際、現在のトランザクションの終端まで有効とすることができます)。 C関数の呼び出し元にポータルの名前を返すことで、結果として行セットを返す手段を提供します。

The passed-in parameter data will be copied into the cursor's portal, so it can be freed while the cursor still exists. 渡されるパラメータデータはカーソルのポータルにコピーされます。 そのため、カーソルが存在している間にそのデータを解放することができます。

引数

<title>Arguments</title>
const char * name

name for portal, or <symbol>NULL</symbol> to let the system select a name ポータルの名前、あるいはシステムに名前を決定させる場合はNULL

SPIPlanPtr plan

prepared statement (returned by <function>SPI_prepare</function>) SPI_prepareで返される)準備済み文

Datum * values

An array of actual parameter values. Must have same length as the statement's number of arguments. 実パラメータ値の配列。 文の引数の数と同じ長さでなければなりません。

const char * nulls

An array describing which parameters are null. Must have same length as the statement's number of arguments. どのパラメータがNULLであるかを示す配列。 文の引数の数と同じ長さでなければなりません。

If <parameter>nulls</parameter> is <symbol>NULL</symbol> then <function>SPI_cursor_open</function> assumes that no parameters are null. Otherwise, each entry of the <parameter>nulls</parameter> array should be <literal>'&nbsp;'</literal> if the corresponding parameter value is non-null, or <literal>'n'</literal> if the corresponding parameter value is null. (In the latter case, the actual value in the corresponding <parameter>values</parameter> entry doesn't matter.) Note that <parameter>nulls</parameter> is not a text string, just an array: it does not need a <literal>'\0'</literal> terminator. nullsNULLの場合、SPI_cursor_openは全てのパラメータがNULLではないとみなします。 さもなければ、nulls配列の各項目は、対応するパラメータが非NULLならば' '、対応するパラメータがNULLならば'n'です。 (後者の場合、values内の対応する値は注意されません。) nullsはテキスト文字列ではなく単なる配列であることに注意してください。 '\0'終端は必要ありません。

bool read_only
<para><literal>true</literal> for read-only execution</para>

読み取りのみの実行の場合true

戻り値

<title>Return Value</title>

Pointer to portal containing the cursor. Note there is no error return convention; any error will be reported via <function>elog</function>. カーソルを含むポータルへのポインタ。 戻り値の規約にはエラーを表すものがないことに注意してください。 エラーはすべてelog経由で報告されます。