Udostępnij za pośrednictwem


Dodatkowe metadane parametrów Table-Valued

Dotyczy:SQL ServerAzure SQL DatabaseAzure SQL Managed InstanceAzure Synapse AnalyticsAnalytics Platform System (PDW)

Aby pobrać metadane dla parametru wartości tabeli, aplikacja wywołuje metodę SQLProcedureColumns. W przypadku parametru o wartości tabeli funkcja SQLProcedureColumns zwraca pojedynczy wiersz. Dodano dwie dodatkowe kolumny specyficzne dla programu SQL Server, SS_TYPE_CATALOG_NAME i SS_TYPE_SCHEMA_NAME, aby zapewnić informacje o schemacie i wykazie typów tabel skojarzonych z parametrami wartości tabeli. Zgodnie ze specyfikacją ODBC SS_TYPE_CATALOG_NAME i SS_TYPE_SCHEMA_NAME są wyświetlane przed wszystkimi kolumnami specyficznymi dla sterowników dodanymi we wcześniejszych wersjach programu SQL Server i po wszystkich kolumnach upoważnionych przez samą funkcję ODBC.

W poniższej tabeli wymieniono kolumny istotne dla parametrów wartości tabeli.

Nazwa kolumny Typ danych Wartość/komentarze
DATA_TYPE Parametr Smallint nie ma wartości NULL SQL_SS_TABLE
TYPE_NAME WVarchar(128) nie ma wartości NULL Nazwa typu parametru wartości tabeli.
COLUMN_SIZE Liczba całkowita ZERO
BUFFER_LENGTH Liczba całkowita 0
DECIMAL_DIGITS Smallint ZERO
NUM_PREC_RADIX Smallint ZERO
NULLABLE Parametr Smallint nie ma wartości NULL SQL_NULLABLE
UWAGI Varchar ZERO
COLUMN_DEF WVarchar(4000) ZERO
SQL_DATA_TYPE Parametr Smallint nie ma wartości NULL SQL_SS_TABLE
SQL_DATETIME_SUB Smallint ZERO
CHAR_OCTET_LENGTH Liczba całkowita ZERO
ORDINAL_POSITION Liczba całkowita nie ma wartości NULL Położenie porządkowe parametru.
IS_NULLABLE Varchar "TAK"
SS_TYPE_CATALOG_NAME WVarchar(128) nie ma wartości NULL Wykaz zawierający definicję typu dla typu tabeli parametru wartości tabeli.
SS_TYPE_SCHEMA_NAME WVarchar(128) nie ma wartości NULL Schemat zawierający definicję typu dla typu tabeli parametru wartości tabeli.

Kolumny WVarchar są definiowane jako Varchar w specyfikacji ODBC, ale są rzeczywiście zwracane jako WVarchar we wszystkich ostatnich sterownikach ODBC programu SQL Server. Ta zmiana została wprowadzona, gdy obsługa Unicode została dodana do specyfikacji ODBC 3.5, ale nie została jawnie wywołana.

Aby uzyskać dodatkowe metadane dla parametrów wartości tabeli, aplikacja używa funkcji katalogu SQLColumns i SQLPrimaryKeys. Zanim te funkcje będą wywoływane dla parametrów wartości tabeli, aplikacja musi ustawić atrybut instrukcji SQL_SOPT_SS_NAME_SCOPE na SQL_SS_NAME_SCOPE_TABLE_TYPE. Ta wartość wskazuje, że aplikacja wymaga metadanych dla typu tabeli, a nie rzeczywistej tabeli. Następnie aplikacja przekazuje TYPE_NAME parametru o wartości tabeli jako parametr TableName. SS_TYPE_CATALOG_NAME i SS_TYPE_SCHEMA_NAME są używane z parametrami CatalogName i Schema Name odpowiednio w celu zidentyfikowania katalogu i schematu dla parametru wartości tabeli. Po zakończeniu pobierania metadanych dla parametrów wartości tabeli aplikacja musi ustawić SQL_SOPT_SS_NAME_SCOPE z powrotem na wartość domyślną SQL_SS_NAME_SCOPE_TABLE.

Gdy SQL_SOPT_SS_NAME_SCOPE jest ustawiona na SQL_SS_NAME_SCOPE_TABLE, zapytania do połączonych serwerów kończą się niepowodzeniem. Wywołania funkcji SQLColumns lub SQLPrimaryKeys z wykazem zawierającym składnik serwera zakończy się niepowodzeniem.

Zobacz też

parametrów Table-Valued (ODBC)