其他資料表值參數中繼資料

適用於:SQL ServerAzure SQL DatabaseAzure SQL 受控執行個體Azure Synapse AnalyticsAnalytics 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 非 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 非 NULL SQL_NULLABLE
REMARKS Varchar NULL
COLUMN_DEF WVarchar(4000) NULL
SQL_DATA_TYPE Smallint 非 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分別與 CatalogNameSchemaName 參數搭配使用,以識別資料表值參數的目錄和架構。 當應用程式完成擷取資料表值參數的中繼資料時,必須將 SQL_SOPT_SS_NAME_SCOPE 社回 SQL_SS_NAME_SCOPE_TABLE 的預設值。

當 SQL_SOPT_SS_NAME_SCOPE 設定為 SQL_SS_NAME_SCOPE_TABLE 時,連結伺服器的查詢會失敗。 使用包含伺服器元件的目錄呼叫 SQLColumns 或 SQLPrimaryKeys 將會失敗。

另請參閱

資料表值參數 (ODBC)