SQLBindParameter

適用於:SQL ServerAzure SQL DatabaseAzure SQL 受控執行個體Azure Synapse AnalyticsAnalytics Platform System (PDW)

SQLBindParameter 可在用來提供 SQL Server Native Client ODBC 驅動程式的數據時,消除數據轉換的負擔,進而大幅提升應用程式的客戶端和伺服器元件效能。 其他優點包括插入或更新近似數值數據類型時,降低精確度損失。

注意

charwchar 類型資料插入影像數據行時,會使用傳入的數據大小,而不是轉換成二進位格式之後的數據大小。

如果 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 中所述進行轉換。 請注意,如果使用其對應的結構(SQL_SS_TIME2_STRUCT和SQL_SS_TIMESTAMPOFFSET_STRUCT),則 time 和 datetimeoffset 類型的參數必須指定為SQL_C_DEFAULTSQL_C_BINARY。

如需詳細資訊,請參閱 日期和時間改善 (ODBC)

大型 CLR UDT 的 SQLBindParameter 支援

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

另請參閱

ODBC API 實作詳細數據
SQLBindParameter 函式