int mysql_stmt_attr_set(MYSQL_STMT *stmt, enum
enum_stmt_attr_type option, const void *arg)
説明
準備されたステートメントのために挙動に影響を附与するために使うことができます。幾つかのオプションをセットするために、この機能を何回でも呼び出すことができます。
option
引数は、セットしたいオプションです。arg
引数はそのオプションのための値です。オプションが整数である場合、arg
はその整数の値を指し示すべきです。
可能なオプション
値:
オプション | アーギュメント型 | ファンクション |
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です。 |
STMT_ATTR_CURSOR_TYPE
オプションをCURSOR_TYPE_READ_ONLY
と一緒に使う場合、mysql_stmt_execute()
を取り出すとき、ステートメントのために、カーソルが開かれます。mysql_stmt_execute()
の前の呼び出しから、カーソルが既に開かれて存在している場合、それは新しいものを開く前にカーソルを閉じます。mysql_stmt_reset()
も再実行のためステートメントを準備する前に、閉じられます。mysql_stmt_free_result()
はどんなカーソルでも開きます。
カーソルを準備されたステートメントのために開く場合、その機能はクライアント側に一時的に記憶させるようにするので、mysql_stmt_store_result()
は不要です。
戻り値
OKの場合0
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 ... */