資料表值參數的 ODBC SQL 類型

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

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

備註

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

如果在 SQLBindParameter 的 ValueType 參數中使用SQL_SS_TABLE做為 C 資料類型,或嘗試在應用程式參數描述元中設定SQL_DESC_TYPE, (APD) 記錄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,因為資料表值參數不支援每個資料列的預設值。 不過,應用程式會將資料行屬性 SQL_CA_SS_COL_HAS_DEFAULT_VALUE 設定為 1。 這表示資料行的所有資料列都會有預設值。 如果 StrLen_or_IndPtr 設定為 SQL_DEFAULT_PARAM,SQLExecute 或 SQLExecDirect 會傳回SQL_ERROR,且診斷記錄會新增至具有 SQLSTATE=HY090 的語句,以及訊息「字串或緩衝區長度無效」。

另請參閱

資料表值參數 (ODBC)