資料表值參數的 ODBC SQL 類型
資料表值參數的支援是由新的 ODBC SQL 類型,也就是 SQL_SS_TABLE 所提供。
備註
SQL_SS_TABLE 無法轉換為其他任何 ODBC 或 SQL Server 資料類型。
如果 SQL_SS_TABLE 在 SQLBindParameter 的 ValueType 參數中當做 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 時 TargetType 參數為 SQL_SS_TABLE,則會傳回 SQL_ERROR,並產生包含 SQLSTATE=HY003 以及「無效的應用程式緩衝區類型」的診斷記錄。
資料表值參數資料行無法當做 SQL_SS_TABLE 類型繫結。 如果呼叫 SQLBindParameter,並將 ParameterType 設定為 SQL_SS_TABLE,則會傳回 SQL_ERROR,並產生包含 SQLSTATE=HY004 以及「無效的 SQL資料類型」的診斷記錄。 這也可以與 SQLSetDescField 和 SQLSetDescRec 一起發生。
資料表值參數資料行值與參數和結果資料行的資料轉換選項相同。
資料表值參數在 SQL Server 2008 或更新版本中僅能是輸入參數。 如果嘗試透過 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 和「無效的字串或緩衝區長度」訊息的陳述式中。