Beschreibt die Ergebnismenge für eine Abfrage, wobei eine Zeile die jeweilige Ausgabespalte der Abfrage beschreibt
sa_describe_query( query [, add_keys ] )
query Mit diesem LONG VARCHAR-Parameter können Sie den Text der zu beschreibenden SQL-Anweisung angeben.
add_keys Mit diesem optionalen BIT-Parameter können Sie angeben, ob ein Satz von Spalten festgelegt wird, der Zeilen in der Ergebnismenge für die zu beschreibende Abfrage eindeutig identifiziert. Der Standardwert ist "0". Beim Standardwert versucht der Datenbankserver nicht, die Spalten zu identifizieren. Im Abschnitt "Bemerkungen" weiter unten finden Sie eine ausführliche Beschreibung dieses Parameters.
Spaltenname | Datentyp | Beschreibung |
---|---|---|
column_number | INTEGER | Die Ordinalposition der von dieser Zeile beschriebenen Spalte, beginnend mit 1. |
name | VARCHAR(128) | Der Name der Spalte. |
domain_id | SMALLINT | Der Datentyp der Spalte. |
domain_name | VARCHAR(128) | Der Datentypname. |
domain_name_with_size | VARCHAR(160) | Der Datentypname mit Größe und Gesamtstellenzahl (wie in CREATE TABLE- und CAST-Funktionen verwendet). |
width | INTEGER | Die Länge eines Zeichenfolgenparameters, die Gesamtstellenzahl eines nummerischen Parameters oder die Anzahl der Byte zum Speichern eines anderen Datentyps. |
scale | INTEGER | Die Anzahl der Stellen nach dem Dezimalzeichen für Spalten mit nummerischem Datentyp und Null für alle anderen Datentypen. |
declared_width | INTEGER | Die Länge eines Zeichenfolgenparameters, die Gesamtstellenzahl eines nummerischen Parameters oder die Anzahl der Byte zum Speichern eines anderen Datentyps. |
user_type_id | SMALLINT | Die type_id eines benutzerdefinierten Datentyps, falls vorhanden, ansonsten NULL. |
user_type_name | VARCHAR(128) | Der Name eines benutzerdefinierten Datentyps, falls vorhanden, sonst NULL. |
correlation_name | VARCHAR(128) | Der mit dem Ausdruck verbundene Korrelationsname, falls vorhanden, sonst NULL. |
base_table_id | UNSIGNED INTEGER | Die table_id, wenn der Ausdruck eine Spalte ist, sonst NULL. |
base_column_id | UNSIGNED INTEGER | Die column_id, wenn der Ausdruck eine Spalte ist, sonst NULL. |
base_owner_name | VARCHAR(128) | Der Eigentümername, wenn der Ausdruck eine Spalte ist, sonst NULL. |
base_table_name | VARCHAR(128) | Der Tabellenname, wenn der Ausdruck eine Spalte ist, sonst NULL. |
base_column_name | VARCHAR(128) | Der Spaltenname, wenn der Ausdruck eine Spalte ist, sonst NULL. |
nulls_allowed | BIT | Ein Indikator mit Wert "1", wenn der Ausdruck NULL sein kann, sonst "0" |
is_autoincrement | BIT | Ein Indikator mit dem Wert "1", wenn der Ausdruck eine Autoincrement-Spalte ist, sonst "0" |
is_key_column | BIT | Ein Indikator mit dem Wert "1", wenn der Ausdruck Teil eines Schlüssels für die Ergebnismenge ist, sonst "0". Weitere Hinweise finden Sie im folgenden Abschnitt "Bemerkungen". |
is_added_key_column | BIT | Ein Indikator mit dem Wert "1", wenn der Ausdruck eine zusätzliche Schlüsselspalte ist, sonst "0". Weitere Hinweise finden Sie im folgenden Abschnitt "Bemerkungen". |
Die sa_describe_query-Prozedur stellt einen API-unabhängigen Mechanismus zur Beschreibung der Namens- und Typinformationen für die Ausdrücke in der Ergebnismenge einer Abfrage zur Verfügung.
Wenn für add_keys "1" angegeben ist, versucht die sa_describe_query-Prozedur, einen Satz von Spalten unter den abgefragten Objekten zu finden, die zusammengefasst als ein Schlüssel für die eindeutige Identifizierung von Zeilen in der Ergebnismenge der zu beschreibenden Abfrage verwendet werden können. Der Schlüssel nimmt die Form einer oder mehrerer Spalten der abgefragten Objekte an und kann auch Spalten umfassen, die von der Abfrage nicht explizit referenziert werden. Wenn der Optimierer einen Schlüssel findet, werden die im Schlüssel verwendeten Spalten in den Ergebnissen mit einem is_key_column-Wert von "1" identifiziert. Wenn kein Schlüssel gefunden wird, wird ein Fehler zurückgegeben.
Bei jeder Spalte, die im Schlüssel enthalten ist, aber in der Abfrage nicht explizit referenziert wird, wird der is_added_key_column-Wert auf "1" gesetzt, um anzudeuten, dass die Spalte den Ergebnissen der Prozedur hinzugefügt wurde. Sonst ist der Wert von is_added_key_column "0".
Wenn Sie keinen add_keys oder einen Wert von "0" angeben, versucht der Optimierer nicht, einen Schlüssel für die Ergebnismenge zu finden, und die Spalten is_key_column und is_added_key_column enthalten NULL.
Die Werte declared_width und width beschreiben beide die Größe einer Spalte. Der declared_width-Wert beschreibt die Größe der Spalte, wie sie von der CREATE TABLE-Anweisung oder der Abfrage definiert wird, während der width-Wert die Größe des Felds angibt, wenn es vom Client abgerufen wird. Die Darstellung eines Typs auf dem Client kann sich von der des Datenbankservers unterscheiden. Datums- und Zeittypen beispielsweise werden in Zeichenfolgen konvertiert, wenn die return_date_time_as_string-Option auf ON gesetzt ist. Bei Zeichenfolgen haben mit Zeichenlängensemantik deklarierte Felder einen declared_width-Wert, der der CREATE TABLE-Größe entspricht, während der width-Wert die maximale Anzahl von Byte angibt, die zum Speichern der zurückgegebenen Zeichenfolge erforderlich sind. Beispiel:
Deklaration | width | declared_width |
---|---|---|
CHAR(10) | 10 | 10 |
CHAR(10 CHAR) | 40 | 10 |
TIMESTAMP | Hängt von der Länge der Zeitstempel-Zeichenfolge ab | 8 |
NUMERIC(10, 3) | 10 (Gesamtstellenzahl) | 10 (Gesamtstellenzahl) |
Keine
Keine
Das folgende Beispiel beschreibt die zurückgegebenen Informationen, wenn alle Spalten in der Departments-Tabelle abgefragt werden:
SELECT * FROM sa_describe_query( 'SELECT * FROM Departments DEPT' ); |
Die Ergebnisse zeigen die Werte der Spalten is_key_column und is_added_key_column als NULL, weil der Parameter add_keys nicht angegeben wurde.
Das folgende Beispiel beschreibt die Informationen, die durch Abfragen der DepartmentName- und Surname-Spalten der Employees-Tabelle, die durch einen Join mit der Departments-Tabelle verknüpft ist, zurückgegeben werden.
SELECT * FROM sa_describe_query( 'SELECT DepartmentName, Surname FROM Employees E JOIN Departments D ON E.EmployeeID = D.DepartmentHeadId', add_keys = 1 ); |
Die Ergebnisse enthalten eine 1 in den Zeilen 3 und 4 der Ergebnismenge, was darauf hinweist, dass die Spalten, die zum eindeutigen Identifizieren von Zeilen in der Ergebnismenge benötigt werden, Employees.EmployeeID und Departments.DepartmentID sind. Auch ist 1 der Wert von is_added_key_column für die Zeilen 3 und 4, weil Employees.EmployeeID und Departments.DepartmentID nicht explizit in der zu beschreibenden Abfrage referenziert wurden.
![]() |
Kommentieren Sie diese Seite in DocCommentXchange.
|
Copyright © 2012, iAnywhere Solutions, Inc. - SQL Anywhere 12.0.1 |