my_bool mysql_stmt_attr_set(MYSQL_STMT *stmt, enum enum_stmt_attr_type option, const void *arg)
説明
プリペアドステートメントの動作に影響を与えるために使用できます。この関数を複数回呼び出して、複数のオプションを設定できます。
option
引数は、設定するオプションです。arg
引数はオプションの値です。arg
は、目的の属性値に設定される変数を指すべきです。変数の型は次の表に示すようなものになります。
次の表に可能な option
値を示します。
オプション | 引数型 | 関数 |
---|---|---|
STMT_ATTR_UPDATE_MAX_LENGTH |
my_bool * |
1 に設定されている場合、mysql_stmt_store_result() によってメタデータ MYSQL_FIELD->max_length 値が更新されます。 |
STMT_ATTR_CURSOR_TYPE |
unsigned long * |
mysql_stmt_execute() が呼び出されたときにステートメントに対して開くカーソルの型。*arg は CURSOR_TYPE_NO_CURSOR (デフォルト) または CURSOR_TYPE_READ_ONLY を指定できます。 |
STMT_ATTR_PREFETCH_ROWS |
unsigned long * |
カーソルの使用時に、サーバーからフェッチする行数。*arg は 1 から unsigned long の最大値の範囲で指定できます。デフォルトは 1 です。 |
CURSOR_TYPE_READ_ONLY
で STMT_ATTR_CURSOR_TYPE
オプションを使用する場合、mysql_stmt_execute()
を呼び出すと、ステートメントに対して、カーソルが開かれます。前の mysql_stmt_execute()
呼び出しからの開いているカーソルがすでに存在する場合、それは新しいカーソルを開く前にカーソルを閉じます。mysql_stmt_reset()
もステートメントの再実行を準備する前に、開いているカーソルを閉じます。mysql_stmt_free_result()
はすべての開いているカーソルを閉じます。
プリペアドステートメントに対してカーソルを開く場合、mysql_stmt_store_result()
は結果セットをクライアント側にバッファーさせるため、必要ありません。
戻り値
成功の場合はゼロ。option
が不明な場合はゼロ以外。
エラー
なし。
例
次の例は、プリペアドステートメントに対してカーソルを開き、一度にフェッチする行数を 5 に設定します。
MYSQL_STMT *stmt;
int rc;
unsigned long type;
unsigned long prefetch_rows = 5;
stmt = mysql_stmt_init(mysql);
type = (unsigned long) CURSOR_TYPE_READ_ONLY;
rc = mysql_stmt_attr_set(stmt, STMT_ATTR_CURSOR_TYPE, (void*) &type);
/* ... check return value ... */
rc = mysql_stmt_attr_set(stmt, STMT_ATTR_PREFETCH_ROWS,
(void*) &prefetch_rows);
/* ... check return value ... */