SQLColAttribute

Gilt für:SQL ServerAzure SQL-DatenbankAzure SQL Managed InstanceAzure Synapse AnalyticsAnalytics Platform System (PDW)

Sie können SQLColAttribute verwenden, um ein Attribut einer Resultsetspalte für vorbereitete oder ausgeführte ODBC-Anweisungen abzurufen. Das Aufrufen von SQLColAttribute für vorbereitete Anweisungen führt zu einem Roundtrip zu SQL Server. Der SQL Server Native Client ODBC-Treiber empfängt Resultsetspaltendaten als Teil der Anweisungsausführung, sodass das Aufrufen von SQLColAttribute nach Abschluss von SQLExecute oder SQLExecDirect kein Server-Roundtrip umfasst.

Hinweis

ODBC-Spaltenbezeichnerattribute sind für alle SQL Server-Resultsets nicht verfügbar.

Feldbezeichner Beschreibung
SQL_COLUMN_TABLE_NAME Verfügbar für Resultsets, die aus Anweisungen abgerufen wurden, die Servercursor erzeugen, oder für ausgeführte SELECT-Anweisungen, die eine FOR BROWSE-Klausel enthalten.
SQL_DESC_BASE_COLUMN_NAME Verfügbar für Resultsets, die aus Anweisungen abgerufen wurden, die Servercursor erzeugen, oder für ausgeführte SELECT-Anweisungen, die eine FOR BROWSE-Klausel enthalten.
SQL_DESC_BASE_TABLE_NAME Verfügbar für Resultsets, die aus Anweisungen abgerufen wurden, die Servercursor erzeugen, oder für ausgeführte SELECT-Anweisungen, die eine FOR BROWSE-Klausel enthalten.
SQL_DESC_CATALOG_NAME Datenbankname. Verfügbar für Resultsets, die aus Anweisungen abgerufen wurden, die Servercursor erzeugen, oder für ausgeführte SELECT-Anweisungen, die eine FOR BROWSE-Klausel enthalten.
SQL_DESC_LABEL Für alle Resultsets verfügbar. Der Wert ist mit dem Wert des SQL_DESC_NAME-Felds identisch.

Das Feld hat nur dann die Länge Null, wenn die Spalte das Ergebnis eines Ausdrucks ist und der Ausdruck keine zugeordnete Bezeichnung hat.
SQL_DESC_NAME Für alle Resultsets verfügbar. Der Wert ist mit dem Wert des SQL_DESC_LABEL-Felds identisch.

Das Feld hat nur dann die Länge Null, wenn die Spalte das Ergebnis eines Ausdrucks ist und der Ausdruck keine zugeordnete Bezeichnung hat.
SQL_DESC_SCHEMA_NAME Der Name des Besitzers. Verfügbar für Resultsets, die aus Anweisungen abgerufen wurden, die Servercursor erzeugen, oder für ausgeführte SELECT-Anweisungen, die eine FOR BROWSE-Klausel enthalten.

Nur verfügbar, wenn der Besitzername für die Spalte in der SELECT-Anweisung angegeben wird.
SQL_DESC_TABLE_NAME Verfügbar für Resultsets, die aus Anweisungen abgerufen wurden, die Servercursor erzeugen, oder für ausgeführte SELECT-Anweisungen, die eine FOR BROWSE-Klausel enthalten.
SQL_DESC_UNNAMED SQL_NAMED für alle Spalten in einem Resultset, es sei denn, die Spalte ist das Ergebnis eines Ausdrucks, der keine zugeordnete Bezeichnung als Teil des Ausdrucks hat. Wenn SQL_DESC_UNNAMED SQL_UNNAMED zurückgibt, enthalten alle ODBC-Spaltenbezeichnerattribute leere Zeichenfolgen für die Spalte.

Der ODBC-Treiber für SQL Server Native Client verwendet die SET FMTONLY-Anweisung, um den Serveraufwand zu reduzieren, wenn SQLColAttribute für vorbereitete, aber nicht ausgeführte Anweisungen aufgerufen wird.

Bei großen Werttypen gibt SQLColAttribute die folgenden Werte zurück:

Feldbezeichner Beschreibung der Änderung
SQL_DESC_DISPLAY_SIZE Die maximale Anzahl von Zeichen, die für das Anzeigen der Spaltendaten benötigt wird. Für große Werttypspalten ist der zurückgegebene Wert SQL_SS_LENGTH_UNLIMITED.
SQL_DESC_LENGTH Gibt die tatsächliche Länge der Spalte im Resultset zurück. Für große Werttypspalten ist der zurückgegebene Wert SQL_SS_LENGTH_UNLIMITED.
SQL_DESC_OCTET_LENGTH Gibt die maximal mögliche Länge für große Werttypspalten zurück. SQL_SS_LENGTH_UNLIMITED wird verwendet, um unbegrenzte Größe anzugeben.
SQL_DESC_PRECISION Gibt den Wert SQL_SS_LENGTH_UNLIMITED für große Werttypspalten zurück.
SQL_DESC_TYPE Gibt SQL_VARCHAR, SQL_WVARCHAR und SQL_VARBINARY für große Werttypen zurück.
SQL_DESC_TYPE_NAME Gibt "varchar", "varbinary" und "nvarchar" für große Werttypen zurück.

Für alle Versionen werden Spaltenattribute nur für das erste Resultset gemeldet, wenn durch einen vorbereiteten Stapel von SQL-Anweisungen mehrere Resultsets erzeugt werden.

Die folgenden Spaltenattribute sind Erweiterungen, die vom SQL Server Native Client ODBC-Treiber verfügbar gemacht werden. Der ODBC-Treiber des nativen SQL Server-Clients gibt alle Werte im Parameter NumericAttrPtr zurück. Die Werte werden als SDWORD (lang mit Vorzeichen) zurückgegeben, außer SQL_CA_SS_COMPUTE_BYLIST, bei dem es sich um einen Zeiger auf ein WORD-Array handelt.

Feldbezeichner Zurückgegebener Wert
SQL_CA_SS_COLUMN_HIDDEN* TRUE, falls die referenzierte Spalte Teil eines verborgenen Primärschlüssels ist, der zur Unterstützung einer Transact-SQL SELECT-Anweisung erstellt wurde, die FOR BROWSE enthält.
SQL_CA_SS_COLUMN_ID Ordnungsposition einer COMPUTE-Klausel-Ergebnisspalte innerhalb der aktuellen Transact-SQL SELECT-Anweisung.
SQL_CA_SS_COLUMN_KEY* TRUE, falls die referenzierte Spalte Teil eines Primärschlüssels für die Zeile ist und die Transact-SQL SELECT-Anweisung FOR BROWSE enthält.
SQL_CA_SS_COLUMN_OP Ganze Zahl, die den Aggregatoperator angibt, der für den Wert in einer COMPUTE-Klauselspalte verantwortlich ist. Die ganzzahligen Werte sind in sqlncli.h definiert.
SQL_CA_SS_COLUMN_ORDER Ordnungsposition der Spalte innerhalb der ORDER BY-Klausel einer ODBC- oder Transact-SQL SELECT-Anweisung.
SQL_CA_SS_COLUMN_SIZE Maximale Länge in Byte, die zum Binden eines aus der Spalte abgerufenen Datenwerts an eine SQL_C_BINARY-Variable erforderlich ist.
SQL_CA_SS_COLUMN_SSTYPE Systemeigener Datentyp der Daten, die in der SQL Server-Spalte gespeichert sind. Die Typwerte sind in sqlncli.h definiert.
SQL_CA_SS_COLUMN_UTYPE Basisdatentyp des benutzerdefinierten Datentyps der SQL Server-Spalte. Die Typwerte sind in sqlncli.h definiert.
SQL_CA_SS_COLUMN_VARYLEN TRUE, wenn sich die Länge der Spaltendaten ändern kann, andernfalls FALSE.
SQL_CA_SS_COMPUTE_BYLIST Zeiger auf ein WORD-Array (kurz ohne Vorzeichen) zur Angabe der Spalten, die im BY-Ausdruck einer COMPUTE-Klausel verwendet werden. Wenn die COMPUTE-Klausel keinen BY-Ausdruck angibt, wird ein NULL-Zeiger zurückgegeben.

Das erste Element des Arrays enthält die Anzahl der BY-Listenspalten. Zusätzliche Elemente sind die Spaltenordinalzahlen.
SQL_CA_SS_COMPUTE_ID computeid of a row that is the result of a COMPUTE clause in the current Transact-SQL SELECT statement.
SQL_CA_SS_NUM_COMPUTES Anzahl von COMPUTE-Klauseln, die in der aktuellen Transact-SQL SELECT-Anweisung angegeben ist.
SQL_CA_SS_NUM_ORDERS Anzahl von Spalten, die in der ORDER BY-Klausel einer ODBC- oder Transact-SQL SELECT-Anweisung angegeben ist.

* Verfügbar, wenn das Anweisungsattribut SQL_SOPT_SS_HIDDEN_COLUMNS auf SQL_HC_ON festgelegt ist.

SQL Server 2005 (9.x) führte treiberspezifische Deskriptorfelder ein, um zusätzliche Informationen bereitzustellen, um den NAMEN der XML-Schemaauflistung, den Schemanamen und den Katalognamen anzugeben. Diese Eigenschaften erfordern keine Anführungszeichen oder ein Escapezeichen, wenn sie nicht-alphanumerische Zeichen enthalten. In der folgenden Tabelle sind diese neuen Deskriptorfelder aufgelistet:

Spaltenname type Beschreibung
SQL_CA_SS_XML_SCHEMACOLLECTION_CATALOG_NAME CharacterAttributePtr Der Name des Katalogs, in dem ein XML-Schemasammlungsname definiert ist. Wenn der Katalogname nicht gefunden werden kann, enthält diese Variable eine leere Zeichenfolge.

Diese Informationen werden vom SQL_DESC_SS_XML_SCHEMACOLLECTION_CATALOG_NAME-Datensatzfeld vom IRD zurückgegeben, das ein Lese-/Schreibfeld ist.
SQL_CA_SS_XML_SCHEMACOLLECTION_SCHEMA_NAM E CharacterAttributePtr Der Name des Schemas, in dem eine XML-Schemaauflistung definiert ist. Wenn der Schemaname nicht gefunden werden kann, enthält diese Variable eine leere Zeichenfolge.

Diese Informationen werden vom SQL_DESC_SS_XML_SCHEMACOLLECTION_SCHEMA_NAME-Datensatzfeld vom IRD zurückgegeben, das ein Lese-/Schreibfeld ist.
SQL_CA_SS_XML_SCHEMACOLLECTION_NAME CharacterAttributePtr Name der XML-Schemaauflistung. Wenn der Name nicht gefunden werden kann, enthält diese Variable eine leere Zeichenfolge.

Diese Informationen werden vom SQL_DESC_SS_XML_SCHEMACOLLECTION_NAME-Datensatzfeld vom IRD zurückgegeben, das ein Lese-/Schreibfeld ist.

Außerdem hat SQL Server 2005 (9.x) neue treiberspezifische Deskriptorfelder eingeführt, um zusätzliche Informationen für eine benutzerdefinierte Typspalte (UDT) eines Resultsets oder einen UDT-Parameter einer gespeicherten Prozedur oder parametrisierten Abfrage bereitzustellen. Diese Eigenschaften erfordern keine Anführungszeichen oder ein Escapezeichen, wenn sie nicht-alphanumerische Zeichen enthalten. In der folgenden Tabelle sind diese neuen Deskriptorfelder aufgelistet:

Spaltenname type Beschreibung
SQL_CA_SS_UDT_CATALOG_NAME CharacterAttributePtr Der Name des Katalogs, der den UDT enthält.
SQL_CA_SS_UDT_SCHEMA_NAME CharacterAttributePtr Der Name des Schemas, das udT enthält.
SQL_CA_SS_UDT_TYPE_NAME CharacterAttributePtr Dies ist der Name des UDT.
SQL_CA_SS_UDT_ASSEMBLY_TYPE_NAME CharacterAttributePtr Der qualifizierte Assemblyname des UDT.

Der vorhandene Deskriptorfeldbezeichner SQL_DESC_TYPE_NAME wird verwendet, um den Namen des UDTs anzugeben. Das SQL_DESC_TYPE-Feld für eine UDT-Typspalte ist SQL_SS_UDT.

SQLColAttribute-Unterstützung für erweiterte Funktionen zu Datum und Uhrzeit

Die für Datums-/Uhrzeittypen zurückgegebenen Werte finden Sie im Abschnitt "In IRD-Feldern zurückgegebene Informationen" in Parameter- und Ergebnismetadaten.

Weitere Informationen finden Sie unter "Datums- und Uhrzeitverbesserungen (ODBC)".

SQLColAttribute-Unterstützung für große CLR-UDTs

SQLColAttribute unterstützt große benutzerdefinierte CLR-Typen (UDTs). Weitere Informationen finden Sie unter "Large CLR User-Defined Types (ODBC)".

SQLColAttribute-Unterstützung für Spalten mit geringer Dichte

SQLColAttribute fragt das neue IRD-Feld (Implementierungszeilendeskriptor) SQL_CA_SS_IS_COLUMN_SET ab, um zu ermitteln, ob eine Spalte eine column_set Spalte ist.

Weitere Informationen finden Sie unter Unterstützung für Sparse Columns (ODBC).For more information, see Sparse Columns Support (ODBC).

Weitere Informationen

SQLColAttribute-Funktion
ODBC-API-Implementierungsdetails
SQLSetStmtAttr