SQLBindParameter

SQLBindParameter 用於提供 SQL Server Native Client ODBC 驅動程式的資料時,可以排除資料轉換的負擔,使應用程式的用戶端和伺服器元件明顯增進效能。其他優點包括插入或更新近似的數值資料類型時,降低有效位數的損失。

[!附註]

將 char 和 wchar 類型資料插入 image 資料行時,會使用傳入之資料的大小,而非轉換為二進位格式後的資料大小。

如果 SQL Server Native Client ODBC 驅動程式在任何參數陣列的單一陣列元素上碰到錯誤,驅動程式會繼續執行其餘陣列元素的陳述式。如果應用程式已經繫結陳述式的參數狀態元素陣列,可以從陣列判斷產生錯誤的參數資料列。

如果使用 SQL Server Native Client ODBC 驅動程式,指定繫結輸入參數時的 SQL_PARAM_INPUT。繫結使用 OUTPUT 關鍵字定義的預存程序參數時,只會指定 SQL_PARAM_OUTPUT 或 SQL_PARAM_INPUT_OUTPUT。

如果繫結參數陣列的陣列元素在陳述式執行時產生錯誤,SQLRowCount 無法信賴 SQL Server Native Client ODBC 驅動程式。ODBC 陳述式屬性 SQL_ATTR_PARAMS_PROCESSED_PTR 會報告錯誤發生前處理的資料列數目。接著,如果需要,此應用程式可以周遊其參數狀態陣列以探索成功執行的陳述式數目。

SQL 字元類型的繫結參數

如果傳入的 SQL 資料類型是字元類型,ColumnSize 就是以字元為單位的大小 (不是以位元組為單位)。如果以位元組為單位的資料字串長度超過 8000,ColumnSize 應該設定為 SQL_SS_LENGTH_UNLIMITED,這表示 SQL 類型的大小沒有任何限制。

例如,如果 SQL 資料類型為 SQL_WVARCHAR,ColumnSize 就不應該大於 4000。如果實際的資料長度大於 4000,則 ColumnSize 應該設定為 SQL_SS_LENGTH_UNLIMITED,好讓驅動程式使用 nvarchar(max)。

SQLBindParameter 和資料表值參數

如同其他參數類型,資料表值參數是由 SQLBindParameter 所繫結。

繫結資料表值參數之後,也會一併繫結其資料行。若要繫結資料行,您可以呼叫 SQLSetStmtAttr,以便將 SQL_SOPT_SS_PARAM_FOCUS 設定為資料表值參數的序數。接著,針對資料表值參數中的每個資料行呼叫 SQLBindParameter。若要傳回到最上層參數繫結,將 SQL_SOPT_SS_PARAM_FOCUS 設定為 0。

如需有關將參數對應到資料表值參數之描述項欄位的詳細資訊,請參閱<資料表值參數和資料行值的繫結與資料傳送>。

如需有關資料表值參數的詳細資訊,請參閱<資料表值參數 (ODBC)>。

SQLBindParameter 對增強型日期和時間功能的支援

日期/時間類型的參數值會經過轉換,如<從 C 轉換成 SQL>中所述。請注意,如果使用 time 和 datetimeoffset 類型的對應結構 (SQL_SS_TIME2_STRUCT 和 SQL_SS_TIMESTAMPOFFSET_STRUCT),其參數的 ValueType 必須指定為 SQL_C_DEFAULT 或 SQL_C_BINARY。

如需詳細資訊,請參閱<ODBC 日期/時間的改善 (ODBC)>。

大型 CLR UDT 的 SQLBindParameter 支援

SQLBindParameter 支援大型 CLR 使用者定義型別 (UDT)。如需詳細資訊,請參閱<大型 CLR 使用者定義型別 (ODBC)>。