分享方式:


數據表值參數的 ODBC SQL 類型

適用於:SQL Server Azure SQL 資料庫 Azure SQL 受控執行個體 Azure Synapse Analytics Analytics Platform System (PDW)

數據表值參數的支援是由新的 ODBC SQL 類型所提供,SQL_SS_TABLE。

備註

SQL_SS_TABLE無法轉換成任何其他 ODBC 或 SQL Server 數據類型。

如果在 SQLBindParameter 的 ValueType 參數中使用SQL_SS_TABLE做為 C 資料類型,或嘗試將應用程式參數描述元 (APD) 記錄中的SQL_DESC_TYPE設定為SQL_SS_TABLE,則會傳回SQL_ERROR,並使用 SQLSTATE=HY003 產生診斷記錄「無效的應用程式緩衝區類型」。

如果SQL_DESC_TYPE設定為IPD記錄中的SQL_SS_TABLE,且對應的應用程式參數描述項記錄未SQL_C_DEFAULT,則會傳回SQL_ERROR,並使用SQLSTATE=HY003產生診斷記錄:「無效的應用程式緩衝區類型」。 這可能會與 SQLSetDescField、SQLSetDescRec 或 SQLBindParameter 的 ParameterType 一起發生。

如果在呼叫 SQLGetData 時SQL_SS_TABLE TargetType 參數,則會傳回SQL_ERROR,並使用 SQLSTATE=HY003 產生診斷記錄:「無效的應用程式緩衝區類型」。

數據表值參數數據行無法系結為類型SQL_SS_TABLE。 如果 呼叫 SQLBindParameter 並將 ParameterType 設定為 SQL_SS_TABLE,則會傳回SQL_ERROR,並使用 SQLSTATE=HY004 產生診斷記錄:「無效的 SQL 數據類型」。 這也適用於 SQLSetDescField 和 SQLSetDescRec。

數據表值參數數據行值與參數和結果數據行具有相同的數據轉換選項。

數據表值參數只能是 SQL Server 2008 (10.0.x) 或更新版本中的輸入參數。 如果嘗試透過 SQLBindParameter 或 SQLSetDescField 將SQL_DESC_PARAMETER_TYPE設定為非SQL_PARAM_INPUT的值,則會傳回SQL_ERROR,並將診斷記錄新增至具有 SQLSTATE=HY105 的語句和訊息「無效的參數類型」。

數據表值參數數據行無法在StrLen_or_IndPtr中使用SQL_DEFAULT_PARAM,因為數據表值參數不支援每一數據列預設值。 相反地,應用程式可以將數據行屬性設定為 1 SQL_CA_SS_COL_HAS_DEFAULT_VALUE。 這表示數據行會有所有數據列的預設值。 如果 StrLen_or_IndPtr 設定為 SQL_DEFAULT_PARAM,SQLExecute 或 SQLExecDirect 會傳回SQL_ERROR,且診斷記錄會新增至具有 SQLSTATE=HY090 的語句,以及訊息「字串或緩衝區長度無效」。

另請參閱

資料表值參數 (ODBC)