頭檔案
#include<mysql.h>
函式原型
int mysql_stmt_attr_set(MYSQL_STMT *stmt, enum enum_stmt_attr_type option, const void *arg)
說明
可用於影響預處理語句的行為。可多次調用該函式來設定多個選項。“option”參量是希望設定的選項,“arg”參量是選項的值。如果“option”是整數,那么“arg”應指向整數的值。
如果與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(),這是因為,該函式會導致在客戶端一側對結果集進行緩衝處理。在MySQL 5.0.2中增加了STMT_ATTR_CURSOR_TYPE選項。在MySQL 5.0.6中,增加了STMT_ATTR_PREFETCH_ROWS選項。如果OK,返回0。如果選項未知,返回非0值。
範例
在下述示例中,為預處理語句打開了1個游標,並將每次獲取的行數設為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*) ⪯fetch_rows);
/* ... check return value ... */