PDF (美式信紙) - 1.4Mb
PDF (A4) - 1.4Mb
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 |
bool * |
如果設定為 1,則會使 mysql_stmt_store_result() 更新 metadata 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()
是不必要的,因為該函數會導致結果集緩衝在客戶端。
以下範例為預處理語句開啟游標,並設定每次擷取的列數為 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 ... */