SQLColAttribute
Gilt für: SQL Server Azure SQL-Datenbank Azure SQL Managed Instance Azure Synapse Analytics Analytics 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