SQLColAttribute

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

Możesz użyć SQLColAttribute do pobrania atrybutu kolumny zbioru wyników dla przygotowanych lub wykonanych instrukcji ODBC. Wywołanie SQLColAttribute w przygotowanych instrukcjach powoduje połączenie w obie strony do SQL Server. Sterownik ODBC natywnego klienta SQL Server otrzymuje dane kolumn zestawu wyników w ramach wykonywania instrukcji, więc wywołanie SQLColAttribute po zakończeniu SQLExecute lub SQLExecDirect nie wiąże się z obie strony serwera.

Uwaga / Notatka

Atrybuty identyfikatorów kolumn ODBC nie są dostępne we wszystkich zestawach wyników SQL Server.

Identyfikator pola Description
SQL_COLUMN_TABLE_NAME Dostępne na zestawach wyników pobranych z instrukcji generujących kursory serwera lub na wykonywanych instrukcjach SELECT zawierających klauzulę FOR BROWSPO.
SQL_DESC_BASE_COLUMN_NAME Dostępne na zestawach wyników pobranych z instrukcji generujących kursory serwera lub na wykonywanych instrukcjach SELECT zawierających klauzulę FOR BROWSPO.
SQL_DESC_BASE_TABLE_NAME Dostępne na zestawach wyników pobranych z instrukcji generujących kursory serwera lub na wykonywanych instrukcjach SELECT zawierających klauzulę FOR BROWSPO.
SQL_DESC_CATALOG_NAME Nazwa bazy danych. Dostępne na zestawach wyników pobranych z instrukcji generujących kursory serwera lub na wykonywanych instrukcjach SELECT zawierających klauzulę FOR BROWSPO.
SQL_DESC_LABEL Dostępne we wszystkich zestawach wyników. Wartość ta jest identyczna z wartością pola SQL_DESC_NAME.

Pole ma długość zerową tylko wtedy, gdy kolumna jest wynikiem wyrażenia, a wyrażenie nie zawiera przypisania etykiet.
SQL_DESC_NAME Dostępne we wszystkich zestawach wyników. Wartość ta jest identyczna z wartością pola SQL_DESC_LABEL.

Pole ma długość zerową tylko wtedy, gdy kolumna jest wynikiem wyrażenia, a wyrażenie nie zawiera przypisania etykiet.
SQL_DESC_SCHEMA_NAME Nazwisko właściciela. Dostępne na zestawach wyników pobranych z instrukcji generujących kursory serwera lub na wykonywanych instrukcjach SELECT zawierających klauzulę FOR BROWSPO.

Dostępne tylko wtedy, gdy nazwa właściciela jest podana dla kolumny w instrukcji SELECT.
SQL_DESC_TABLE_NAME Dostępne na zestawach wyników pobranych z instrukcji generujących kursory serwera lub na wykonywanych instrukcjach SELECT zawierających klauzulę FOR BROWSPO.
SQL_DESC_UNNAMED SQL_NAMED dla wszystkich kolumn w zbiorze wyników, chyba że kolumna jest wynikiem wyrażenia, które nie zawiera przypisania etykiet jako części wyrażenia. Gdy SQL_DESC_UNNAMED zwraca SQL_UNNAMED, wszystkie atrybuty identyfikatorów kolumn ODBC zawierają ciągi o zerowej długości dla kolumny.

Sterownik ODBC dla natywnego klienta SQL Server wykorzystuje SET FMTONLY to zadanie do zmniejszenia narzutu serwera, gdy SQLColAttribute jest wywoływany dla przygotowanych, ale niewykonanych instrukcji.

Dla typów dużych wartości SQLColAttribute zwraca następujące wartości:

Identyfikator pola Opis zmiany
SQL_DESC_DISPLAY_SIZE Jest to maksymalna liczba znaków potrzebna do wyświetlenia danych z kolumny. Dla kolumn typu dużych wartości zwracana wartość wynosi SQL_SS_LENGTH_UNLIMITED.
SQL_DESC_LENGTH Zwraca rzeczywistą długość kolumny w zbiorze wyników. Dla kolumn typu dużych wartości zwracana wartość wynosi SQL_SS_LENGTH_UNLIMITED.
SQL_DESC_OCTET_LENGTH Zwraca maksymalną długość kolumny typu o dużej wartości. SQL_SS_LENGTH_UNLIMITED służy do oznaczania nieograniczonego rozmiaru.
SQL_DESC_PRECISION Zwraca wartość SQL_SS_LENGTH_UNLIMITED dla kolumn typu dużych wartości.
SQL_DESC_TYPE Zwroty SQL_VARCHAR, SQL_WVARCHAR i SQL_VARBINARY dla typów o dużej wartości.
SQL_DESC_TYPE_NAME Zwraca "varchar", "varbinary", "nvarchar" dla typów o dużych wartościach.

We wszystkich wersjach atrybuty kolumn są raportowane tylko dla pierwszego zbioru wyników, gdy wiele zestawów wyników jest generowanych przez przygotowaną partię instrukcji SQL.

Poniższe atrybuty kolumn to rozszerzenia udostępniane przez sterownik ODBC dla natywnego klienta SQL Server. Sterownik ODBC dla natywnego klienta SQL Server zwraca wszystkie wartości w parametrze NumericAttrPtr. Wartości zwracane są jako SDWORD (signed long), z wyjątkiem SQL_CA_SS_COMPUTE_BYLIST, który jest wskaźnikiem do tablicy WORD.

Identyfikator pola Zwrócona wartość
SQL_CA_SS_COLUMN_HIDDEN* TRUE, jeśli kolumna, do której się odwołujesz, jest częścią ukrytego klucza pierwotnego utworzonego do obsługi Transact-SQL SELECT zawierającego FOR BROWSE.
SQL_CA_SS_COLUMN_ID Pozycja porządkowa kolumny wynik klauzuli COMPUTE w aktualnym Transact-SQL SELECT.
SQL_CA_SS_COLUMN_KEY* TRUE, jeśli kolumna, do której się odwołuje, jest częścią klucza podstawowego dla wiersza, a instrukcja SELECT Transact-SQL zawiera FOR BROWSE.
SQL_CA_SS_COLUMN_OP Liczba całkowita określająca operator agregatu odpowiedzialny za wartość w kolumnie klauzuli COMPUTE. Definicje wartości całkowitych znajdują się w sqlncli.h.
SQL_CA_SS_COLUMN_ORDER Pozycja porządkowa kolumny w klauzuli ORDER BY Transact-SQL ODBC lub SELECT w instrukcji SELECT.
SQL_CA_SS_COLUMN_SIZE Maksymalna długość w bajtach wymagana do powiązania wartości danych pobranej z kolumny z zmienną SQL_C_BINARY.
SQL_CA_SS_COLUMN_SSTYPE Natywny typ danych przechowywany w kolumnie SQL Server. Definicje wartości typowych znajdują się w sqlncli.h.
SQL_CA_SS_COLUMN_UTYPE Bazowy typ danych kolumny SQL Server zdefiniowanego przez użytkownika. Definicje wartości typowych znajdują się w sqlncli.h.
SQL_CA_SS_COLUMN_VARYLEN PRAWDA, jeśli dane kolumny mogą się różnić długością, NIEPRAWDA w przeciwnym razie.
SQL_CA_SS_COMPUTE_BYLIST Wskaźnik do tablicy WORD (nieznakomity) określającej kolumny używane w frazie BY w klauzuli COMPUTE. Jeśli klauzula COMPUTE nie określa frazy BY, zwracany jest wskaźnik NULL.

Pierwszy element tablicy zawiera liczbę kolumn listy BY. Dodatkowymi elementami są kolumnowe liczby porządkowe.
SQL_CA_SS_COMPUTE_ID computeid wiersza będącego wynikiem klauzuli COMPUTE w aktualnym Transact-SQL SELECT.
SQL_CA_SS_NUM_COMPUTES Liczba klauzul COMPUTE określonych w aktualnym Transact-SQL SELECT.
SQL_CA_SS_NUM_ORDERS Liczba kolumn określonych w ODBC lub Transact-SQL klauzuli ORDER BY w instrukcji SELECT.

* Dostępne, jeśli atrybut SQL_SOPT_SS_HIDDEN_COLUMNS instrukcji jest ustawiony na SQL_HC_ON.

SQL Server 2005 (9.x) wprowadził specyficzne dla sterownika pola deskryptoru, które dostarczały dodatkowych informacji oznaczających odpowiednio nazwę kolekcji schematu XML, nazwę schematu oraz nazwę katalogu. Te właściwości nie wymagają cudzysłowu ani znaku ucieczki, jeśli zawierają znaki niealfanumeryczne. Poniższa tabela przedstawia te nowe pola deskryptoru:

Nazwa kolumny Typ Description
SQL_CA_SS_XML_SCHEMACOLLECTION_CATALOG_NAME CharacterAttributePtr Nazwa katalogu, w którym zdefiniowana jest nazwa kolekcji schematu XML. Jeśli nazwy katalogu nie można znaleźć, to ta zmienna zawiera pusty ciąg danych.

Informacje te są zwracane z pola rekordu SQL_DESC_SS_XML_SCHEMACOLLECTION_CATALOG_NAME w IRD, które jest polem odczytu i zapisu.
SQL_CA_SS_XML_SCHEMACOLLECTION_SCHEMA_NAM E CharacterAttributePtr Nazwa schematu, w którym zdefiniowana jest nazwa kolekcji schematu XML. Jeśli nazwy schematu nie można znaleźć, to ta zmienna zawiera pusty ciąg znaków.

Informacje te są zwracane z pola SQL_DESC_SS_XML_SCHEMACOLLECTION_SCHEMA_NAME rekordu IRD, które jest polem odczytu i zapisu.
SQL_CA_SS_XML_SCHEMACOLLECTION_NAME CharacterAttributePtr Nazwa kolekcji schematów XML. Jeśli nazwy nie można znaleźć, to ta zmienna zawiera pusty ciąg znaków.

Informacje te są zwracane z pola rekordu SQL_DESC_SS_XML_SCHEMACOLLECTION_NAME IRD, które jest polem odczytu i zapisu.

Ponadto SQL Server 2005 (9.x) wprowadził nowe pola deskryptoryczne specyficzne dla sterowników, aby dostarczyć dodatkowych informacji dla kolumny typu zdefiniowanego przez użytkownika (UDT) zbioru wyników lub parametru UDT procedury przechowywanej lub parametryzowanego zapytania. Te właściwości nie wymagają cudzysłowu ani znaku ucieczki, jeśli zawierają znaki niealfanumeryczne. Poniższa tabela przedstawia te nowe pola deskryptoru:

Nazwa kolumny Typ Description
SQL_CA_SS_UDT_CATALOG_NAME CharacterAttributePtr Nazwa katalogu zawierającego UDT.
SQL_CA_SS_UDT_SCHEMA_NAME CharacterAttributePtr Nazwa schematu zawierającego UDT.
SQL_CA_SS_UDT_TYPE_NAME CharacterAttributePtr Nazwa UDT.
SQL_CA_SS_UDT_ASSEMBLY_TYPE_NAME CharacterAttributePtr Nazwa kwalifikowana dla zgromadzenia UDT.

Istniejący identyfikator pola deskryptorowego SQL_DESC_TYPE_NAME służy do wskazania nazwy UDT. Pole SQL_DESC_TYPE dla kolumny typu UDT to SQL_SS_UDT.

Wsparcie SQLColAttribute dla ulepszonych funkcji daty i godziny

Aby uzyskać wartości zwracane dla typów dat/godzin, zobacz sekcję "Informacje zwrócone w polach IRD" w sekcji Metadane parametrów i wyników.

Więcej informacji można znaleźć w artykule Ulepszenia daty i godziny (ODBC).

Obsługa SQLColAttribute dla dużych CLR UDT

SQLColAttribute obsługuje duże typy CLR zdefiniowane przez użytkownika (UDT). Więcej informacji można znaleźć w sekcji Duże typy CLR User-Defined (ODBC).

Obsługa SQLColAttribute dla rzadkich kolumn

SQLColAttribute zapytuje nowe pole deskryptoru wiersza implementacyjnego (IRD), SQL_CA_SS_IS_COLUMN_SET, aby ustalić, czy kolumna jest kolumną column_set .

Więcej informacji można znaleźć w artykule Sparse Columns Support (ODBC).

Zobacz też

Funkcja SQLColAttribute
Szczegóły implementacji interfejsu API ODBC
SQLSetStmtAttr