## QUERY-Anweisung (query_statement)

Eine QUERY-Anweisung (query_statement) spezifiziert eine gegebenenfalls geordnete Ergebnistabelle. Es gibt verschiedene Grundtypen für die Formulierung einer QUERY-Anweisung.

### Syntax

<query_statement> ::= <declare_cursor_statement>
| <recursive_declare_cursor_statement>
| <select_statement>

### Beispiele

SQL-Tutorial, Datenanfrage

### Erläuterung

Durch eine QUERY-Anweisung wird eine benannte oder unbenannte Ergebnistabelle erzeugt. Eine unbenannte Ergebnistabelle kann im Gegensatz zu einer benannten Ergebnistabelle nicht in einer FROM-Klausel oder im CURRENT OF <result_table_name> einer nachfolgenden SQL-Anweisung angegeben werden.

Folgende QUERY-Anweisungen werden unterschieden:

Grundtypen einer QUERY-Anweisung |
DECLARE CURSOR-Anweisung | Eine benannte Ergebnistabelle wird definiert und erzeugt.
SELECT-Anweisung select_statement | Eine unbenannte Ergebnistabelle wird definiert und erzeugt.
Rekursive DECLARE CURSOR-Anweisung | Mit dieser Anweisung können Stücklisten erzeugt werden.

Für die SELECT-Anweisung select_statement gelten die Regeln, die für die DECLARE CURSOR-Anweisung declare_cursor_statement angegeben werden.

Die Reihenfolge der Zeilen in der Ergebnistabelle hängt von der systeminternen Suchstrategie ab und ist nicht vorhersehbar. Der einzig sichere Weg, eine Sortierung der Ergebniszeilen zu erhalten, besteht in der Angabe einer ORDER-Klausel.

#### Änderbare Ergebnistabelle

Eine Ergebnistabelle bzw. die ihr zugrundeliegenden Basistabellen sind änderbar, wenn die QUERY-Anweisung folgende Bedingungen erfüllt:

● Die QUERY-Anweisung besteht aus einer DECLARE CURSOR-Anweisung.

● Der QUERY-Ausdruck (query_expression) darf nur aus einer QUERY-Spezifikation (query_spec) bestehen.

● In der FROM-Klausel der QUERY-Spezifikation darf nur eine Basistabelle oder eine änderbare View-Tabelle angegeben worden sein.

● Es darf nicht das Schlüsselwort DISTINCT, eine GROUP- oder HAVING-Klausel angegeben werden.

● Ausdrücke dürfen keine Set-Funktion enthalten.

● Die Ergebnistabelle ist eine benannte Ergebnistabelle, d.h. sie darf nicht durch eine SELECT-Anweisung erzeugt worden sein.

Siehe auch:

Ergebnistabellenname

Glossar, Tabelle