分享方式:


數據表值參數描述元欄位

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

支援資料表值參數包含 ODBC 應用程式參數描述元 (APD) 和實作參數描述元 (IPD) 中新的 SQL Server 特定欄位。

備註

名稱 Location 類型 描述
SQL_CA_SS_TYPE_NAME IPD SQLTCHAR* 數據表值參數的伺服器類型名稱。

呼叫 SQLBindParameter 時指定資料表值參數類型名稱時,它一律必須指定為 Unicode 值,即使在建置為 ANSI 應用程式的應用程式中也是如此。 參數StrLen_or_IndPtr所使用的值應該是SQL_NTS或名稱的字串長度乘以sizeof(WCHAR)。

透過 SQLSetDescField 指定資料表值參數類型名稱時,可以使用符合應用程式建置方式的常值來指定。 ODBC 驅動程式管理員會執行任何必要的 Unicode 轉換。
SQL_CA_SS_TYPE_CATALOG_NAME (唯讀) IPD SQLTCHAR* 定義型別的目錄。
SQL_CA_SS_TYPE_SCHEMA_NAME IPD SQLTCHAR* 定義型別的架構。

應用程式不得為數據表值參數設定SQL_CA_SS_TYPE_CATALOG_NAME。 這樣做會傳回SQL_ERROR,並使用 SQLSTATE = HY091 和訊息「無效描述元字段標識碼」記錄診斷記錄。

當參數焦點設定為資料表值參數時,下列語句屬性和描述元標頭欄位會套用至數據表值參數:

名稱 Location 類型 描述
SQL_ATTR_PARAMSET_SIZE

(這相當於APD中的SQL_DESC_ARRAY_SIZE。
APD SQLUINTEGER 數據表值參數之緩衝區陣列的數位大小。 這是緩衝區將容納的數據列數目上限,或是數據列中緩衝區的大小;數據表值參數值本身的數據列可能比緩衝區可以保存的數據列多或少。 預設為 1。

注意:如果SQL_SOPT_SS_PARAM_FOCUS設為預設值 0,SQL_ATTR_PARAMSET_SIZE會參考 語句,並指定參數集的數目。 如果SQL_SOPT_SS_PARAM_FOCUS設定為數據表值參數的序數,它會參考數據表值參數,並指定數據表值參數所設定的每個參數的數據列數目。
SQL_ATTR_PARAM _BIND_TYPE APD SQLINTEGER 預設值為 SQL_PARAM_BIND_BY_COLUMN。

若要選取數據列系結,此欄位會設定為結構長度,或將系結至一組數據表值參數數據列之緩衝區的實例。 此長度必須包含所有系結數據行的空間,以及結構或緩衝區的任何邊框間距。 這可確保當系結數據行的位址以指定的長度遞增時,結果會指向下一個數據列中相同數據行的開頭。 在 ANSI C 中使用 sizeof 運算符時,會保證此行為。
SQL_ATTR_PARAM_BIND_OFFSET_PTR APD SQLINTEGER* 預設值為 Null 指標。

如果此欄位非 Null,驅動程式會取值指標、將取值值新增至描述元記錄中每個延遲的欄位(SQL_DESC_DATA_PTR、SQL_DESC_INDICATOR_PTR和SQL_DESC_OCTET_LENGTH_PTR),並使用新的指標值來存取數據值。

這些欄位只對數據表值參數有效,而且會忽略其他數據類型。

SQL_CA_SS_TYPE_NAME是預存過程調用的選擇性專案。 它必須指定給不是過程調用的 SQL 語句,才能讓伺服器判斷數據表值參數的類型。

如果重新初始化類型名稱,而且數據表值參數的數據表類型定義於與預存程式不同的架構中,則必須在實作參數描述元 (IPD) 中指定SQL_CA_SS_TYPE_SCHEMA_NAME。 如果沒有,伺服器將無法判斷數據表值參數的類型。 當您呼叫 SQLExecute 或 SQLExecDirect 時,這會導致錯誤。 錯誤會有 SQLSTATE= 07006 和訊息「限制數據類型屬性違規」。

數據表值參數數據行可以使用數據列或數據行系結。 預設值為數據行型系結。 您可以藉由設定SQL_ATTR_PARAM_BIND_TYPE和SQL_ATTR_ PARAM_BIND_OFFSET_PTR來指定數據列式系結。 這類似於數據行和參數的數據列系結。

SQL_CA_SS_TYPE_CATALOG_NAME和SQL_CA_SS_TYPE_SCHEMA_NAME也可以用來擷取與 CLR 使用者定義型別參數相關聯的目錄和架構。 這些是這些類型之現有類型特定目錄架構屬性的替代方案。

另請參閱

資料表值參數 (ODBC)