SQLColAttribute
Sie können verwenden SQLColAttribute
, um ein Attribut einer Resultsetspalte für vorbereitete oder ausgeführte ODBC-Anweisungen abzurufen. Das Aufrufen SQLColAttribute
von vorbereiteten Anweisungen führt zu einem Roundtrip zu SQL Server. Der SQL Server Native Client ODBC-Treibers empfängt Resultsetspaltendaten im Rahmen der Anweisungsausführung, sodass der Aufruf SQLColAttribute
nach Abschluss von SQLExecute oder SQLExecDirect keinen Server roundtrip umfasst.
Hinweis
ODBC-Spaltenbezeichnerattribute sind nicht für alle SQL Server Resultsets 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. |
SQL Server Native Client ODBC-Treiber verwendet die SET FMTONLY-Anweisung, um den Serveraufwand zu reduzieren, wenn SQLColAttribute
für vorbereitete, aber nicht ausgeführte Anweisungen aufgerufen wird.
Gibt für Typen mit SQLColAttribute
großen Werten 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 SQL Server Native Client ODBC-Treiber gibt alle Werte im NumericAttrPtr-Parameter 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 einer Zeile, die das Ergebnis einer COMPUTE-Klausel in der aktuellen Transact-SQL SELECT-Anweisung ist. |
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 wurden treiberspezifische Deskriptorfelder eingeführt, um zusätzliche Informationen zum Angeben des XML-Schemasammlungsnamens, des Schemanamens bzw. des Katalognamens 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_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 wurden SQL Server 2005 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 den 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 assemblyqualifizierte Name 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
Informationen zu den für Datums-/Uhrzeittypen zurückgegebenen Werten finden Sie im Abschnitt "In IRD-Feldern zurückgegebene Informationen" unter Parameter- und Ergebnismetadaten.
Weitere Informationen finden Sie unter Verbesserungen an Datum und Uhrzeit (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 Implementierungszeilendeskriptorfeld (IRD) SQL_CA_SS_IS_COLUMN_SET ab, um zu bestimmen, ob eine Spalte eine column_set
Spalte ist.
Weitere Informationen finden Sie unter Unterstützung von Sparsespalten (ODBC).
Weitere Informationen
SQLColAttribute-Funktion
ODBC API Implementation Details
SQLSetStmtAttr