Click here to view and discuss this page in DocCommentXchange. In the future, you will be sent there automatically.

SQL Anywhere 11.0.1 (Deutsch) » SQL Anywhere Server - SQL-Referenzhandbuch » Systemobjekte » Systemprozeduren » Alphabetische Liste der Systemprozeduren

 

sa_describe_query-Systemprozedur

Beschreibt die Ergebnismenge für eine Abfrage, wobei eine Zeile die jeweilige Ausgabespalte der Abfrage beschreibt

Syntax
sa_describe_query( 
Abfrage 
[, hinzugefügte_Schlüssel)
Argumente
  • Abfrage   Mit diesem LONG VARCHAR-Parameter können Sie den Text der zu beschreibenden SQL-Anweisung angeben.

  • hinzugefügte_Schlüssel   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.

Ergebnismenge
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. Weitere Hinweise finden Sie unter SYSDOMAIN-Systemansicht.
domain_name VARCHAR(128) Der Datentypname. Weitere Hinweise finden Sie unter SYSDOMAIN-Systemansicht.
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. Weitere Hinweise finden Sie unter SYSUSERTYPE-Systemansicht.
user_type_name VARCHAR(128) Der Name eines benutzerdefinierten Datentyps, falls vorhanden, sonst NULL. Weitere Hinweise finden Sie unter SYSUSERTYPE-Systemansicht.
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 ein Feld ist, sonst NULL. Weitere Hinweise finden Sie unter SYSTAB-Systemansicht.
base_column_id UNSIGNED INTEGER Die column_id, wenn der Ausdruck ein Feld ist, sonst NULL. Weitere Hinweise finden Sie unter SYSTABCOL-Systemansicht.
base_owner_name VARCHAR(128) Der Eigentümername, wenn der Ausdruck ein Feld ist, sonst NULL. Weitere Hinweise finden Sie unter SYSUSER-Systemansicht.
base_table_name VARCHAR(128) Der Tabellenname, wenn der Ausdruck ein Feld ist, sonst NULL.
base_column_name VARCHAR(128) Der Spaltenname, wenn der Ausdruck ein Feld 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 Wert "1", wenn der Ausdruck eine Autoincrement-Spalte ist, sonst "0"
is_key_column BIT Ein Indikator mit Wert "1", wenn der Ausdruck Teil eines Schlüssels für die Ergebnismenge ist, sonst "0". Im Abschnitt "Bemerkungen" weiter unten finden Sie weitere Hinweise.
is_added_key_column BIT Ein Indikator mit Wert "1", wenn der Ausdruck eine hinzugefügte Schlüsselspalte ist, sonst "0". Im Abschnitt "Bemerkungen" unten finden Sie weitere Hinweise.
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 hinzugefügte_Schlüssel "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 hinzugefügte_Schlüssel 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änge-Semantik 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. Zum 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)
Berechtigungen

Keine

Nebenwirkungen

Keine

Siehe auch
Beispiele

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 hinzugefügte_Schlüssel 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.