其他數據表值參數元數據
適用於:SQL Server Azure SQL 資料庫 Azure SQL 受控執行個體 Azure Synapse Analytics Analytics Platform System (PDW)
若要擷取數據表值參數的元數據,應用程式會呼叫 SQLProcedureColumns。 針對數據表值參數,SQLProcedureColumns 會傳回單一數據列。 已新增兩個額外的 SQL Server 特定數據行,SS_TYPE_CATALOG_NAME和SS_TYPE_SCHEMA_NAME,以提供與數據表值參數相關聯之數據表類型的架構和目錄資訊。 與 ODBC 規格一致,SS_TYPE_CATALOG_NAME和SS_TYPE_SCHEMA_NAME會出現在舊版 SQL Server 中新增的所有驅動程式特定數據行之前,以及 ODBC 本身所授權的所有數據行之後。
下表列出對數據表值參數而言很重要的數據行。
資料行名稱 | 資料類型 | 值/註解 |
---|---|---|
DATA_TYPE | Smallint not NULL | SQL_SS_TABLE |
TYPE_NAME | WVarchar(128) 非 NULL | 數據表值參數的類型名稱。 |
COLUMN_SIZE | 整數 | NULL |
BUFFER_LENGTH | 整數 | 0 |
DECIMAL_DIGITS | Smallint | NULL |
NUM_PREC_RADIX | Smallint | NULL |
NULLABLE | Smallint not NULL | SQL_NULLABLE |
REMARKS | Varchar | NULL |
COLUMN_DEF | WVarchar(4000) | NULL |
SQL_DATA_TYPE | Smallint not NULL | SQL_SS_TABLE |
SQL_DATETIME_SUB | Smallint | NULL |
CHAR_OCTET_LENGTH | 整數 | NULL |
ORDINAL_POSITION | 整數不是 NULL | 參數的序數位置。 |
IS_NULLABLE | Varchar | “YES” |
SS_TYPE_CATALOG_NAME | WVarchar(128) 非 NULL | 目錄,其中包含數據表值參數之數據表類型的類型定義。 |
SS_TYPE_SCHEMA_NAME | WVarchar(128) 非 NULL | 架構,其中包含數據表值參數之數據表類型的型別定義。 |
WVarchar 數據行在 ODBC 規格中定義為 Varchar,但實際上會在最近所有 SQL Server ODBC 驅動程式中傳回為 WVarchar。 當 Unicide 支援新增至 ODBC 3.5 規格,但未明確呼叫時,就會進行這項變更。
若要取得數據表值參數的其他元數據,應用程式會使用目錄函式 SQLColumns 和 SQLPrimaryKeys。 針對數據表值參數呼叫這些函式之前,應用程式必須將語句屬性SQL_SOPT_SS_NAME_SCOPE設定為SQL_SS_NAME_SCOPE_TABLE_TYPE。 這個值表示應用程式需要數據表類型的元數據,而不是實際的數據表。 然後,應用程式會將數據表值參數的TYPE_NAME傳遞為 TableName 參數。 SS_TYPE_CATALOG_NAME和SS_TYPE_SCHEMA_NAME分別與 CatalogName 和 SchemaName 參數搭配使用,以識別數據表值參數的目錄和架構。 當應用程式完成擷取資料表值參數的元數據時,必須將SQL_SOPT_SS_NAME_SCOPE設定回其預設值SQL_SS_NAME_SCOPE_TABLE。
當SQL_SOPT_SS_NAME_SCOPE設定為SQL_SS_NAME_SCOPE_TABLE時,鏈接伺服器的查詢會失敗。 使用包含伺服器元件的目錄呼叫 SQLColumns 或 SQLPrimaryKeys 將會失敗。