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の場合0optionが未知である場合、ゼロ以外。
エラー
なし。
例
以下の例は、準備されたステートメントのために、カーソルを開き、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 ... */
