PDF (US Ltr) - 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() 更新中繼資料 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 ... */