SQLColAttribute
Sie können SQLColAttribute zum Abrufen eines Attributs aus einer Resultsetspalte verwenden, entweder für vorbereitete oder ausgeführte ODBC-Anweisungen. Wenn Sie SQLColAttribute für vorbereitete Anweisungen aufrufen, wird ein Roundtrip zu SQL Server erzeugt. Der SQL Server Native Client ODBC-Treiber erhält Resultset-Spaltendaten als Teil der Anweisungsausführung, deshalb wird beim Aufrufen von SQLColAttribute nach dem Beenden von SQLExecute oder SQLExecDirect kein Server-Roundtrip erzeugt.
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 |
Der 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 SQL Server Native Client ODBC-Treiber verwendet die SET FMTONLY-Anweisung, um den Serveraufwand zu verringern, wenn SQLColAttribute für vorbereitete, aber noch nicht ausgeführte Anweisungen aufgerufen wird.
Für große 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 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 |
Rückgabewert |
---|---|
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 Anweisungsattribut SQL_SOPT_SS_HIDDEN_COLUMNS auf SQL_HC_ON festgelegt ist.
In SQL Server 2005 wurden treiberspezifische Deskriptorfelder eingeführt, um zusätzliche Informationen zur Bezeichnung der XML-Schemaauflistung, des Schemanamens und 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 |
Typ |
Beschreibung |
---|---|---|
SQL_CA_SS_XML_SCHEMACOLLECTION_CATALOG_NAME |
CharacterAttributePtr |
Der Name des Katalogs, in dem eine XML-Schemaauflistung 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 in SQL Server 2005 neue treiberspezifische Deskriptorfelder eingeführt, um zusätzliche Informationen für entweder einen benutzerdefinierten Spaltentyp (UDT) eines Resultsets oder für einen UDT-Parameter einer gespeicherten Prozedur oder einer 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 |
Typ |
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 |
Der Name des UDT. |
SQL_CA_SS_UDT_ASSEMBLY_TYPE_NAME |
CharacterAttributePtr |
Der qualifizierte Name der UDT-Assembly. |
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 Features zu Datum und Uhrzeit
Informationen zu den für Datums-/Zeittypen zurückgegebenen Werten finden Sie im Abschnitt "In IRD-Feldern zurückgegebene Informationen" in Parameter- und Ergebnismetadaten.
Weitere Informationen finden Sie unter Datums-/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 Große benutzerdefinierte CLR-Typen (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 bestimmen, ob eine Spalte eine column_set-Spalte ist.
Weitere Informationen finden Sie unter Unterstützung für Spalten mit geringer Dichte (ODBC).
Siehe auch