要設定參數的值,應用程式只需設定該參數綁定的變數值。 這個值何時被設定並不重要,只要是在敘述執行前設定即可。 應用程式可以在綁定變數前後設定值,並且可以無限次更改該值。 當該敘述執行時,驅動程式只需取得變數的當前值。 當一個預備陳述被執行超過一次時,這特別有用;應用程式會在每次執行該語句時,為部分或全部變數設定新值。 關於此點的範例,請參閱本節前方的 「預備執行」。
若在呼叫 SQLBindParameter 時綁定了長度/指示緩衝區,則在執行該語句前必須將其設為以下其中之一:
綁定變數中資料的位元組長度。 驅動程式僅在變數為字元或二進位時檢查此長度(ValueType 為 SQL_C_CHAR 或 SQL_C_BINARY)。
SQL_NTS。 資料為空終端字串。
SQL_NULL_DATA。 資料值為 NULL,驅動程式會忽略綁定變數的值。
SQL_DATA_AT_EXEC或SQL_LEN_DATA_AT_EXEC巨集的結果。 參數的值會隨 SQLPutData 一起傳送。 欲了解更多資訊,請參閱本節後面的 「傳送長資料」。
下表顯示了綁定變數的值以及應用程式為各種參數值設定的長度/指示緩衝區。
| 參數 value |
參數 (SQL) 資料類型 |
變數 (C) 資料類型 |
價值 界限 變數 |
價值 指標/長度 緩衝區[d] |
|---|---|---|---|---|
| “ABC” | SQL_CHAR | SQL_C_CHAR | ABC\0[a] | SQL_NTS或3 |
| 10 | SQL_INTEGER | SQL_C_SLONG | 10 | -- |
| 10 | SQL_INTEGER | SQL_C_CHAR | 10\0[a] | SQL_NTS或2 |
| 下午1點。 | SQL_TYPE_TIME (時間類型) | SQL_C_TYPE_TIME | 13,0,0[b] | -- |
| 下午1點。 | SQL_TYPE_TIME | SQL_C_CHAR | {t '13:00:00'}\0[a], [c] | SQL_NTS或14 |
| 零 | SQL_SMALLINT | SQL_C_SSHORT | -- | SQL_NULL_DATA |
[a] 「\0」代表一個空終止字元。 只有當長度/指示緩衝區的值為SQL_NTS時,才需要使用空終止字元。
[b] 此列表中的數字是儲存在TIME_STRUCT結構欄位中的數字。
[c] 字串使用 ODBC 日期轉義子句。 欲了解更多資訊,請參閱 日期、時間與時間戳文字。
[d] 駕駛者必須始終檢查此值,以判斷是否為特殊值,如SQL_NULL_DATA。
驅動程式在執行時對參數值的處理取決於驅動程式。 如有必要,驅動程式會將綁定變數的 C 資料型別與位元組長度轉換為參數的 SQL 資料型態、精確度與縮放。 在大多數情況下,驅動程式會將該值傳送給資料來源。 在某些情況下,它會將值格式化為文字,並在將陳述式傳送到資料來源前,先將其插入 SQL 陳述式中。