Pragmas und Annotationen sind spezielle SQL-Kommentare, die von SESAM/SQL interpretiert werden. Mit ihnen können Sie Hinweise für die Ausführung von SQL- oder UtilityAnweisungen geben. Pragmas oder Annotationen mit syntaktischen Fehlern werden als Kommentar behandelt und von SESAM/SQL ignoriert.
Ein Pragma kann nur am Anfang einer SQL- oder Utility-Anweisung stehen. Davor dürfen nur Kommentare (einschliesslich weiterer Pragmas) und Trenner stehen. Pragmas wirken sich auf die gesamte Anweisung aus, einschliesslich der verwendeten Views. Das Pragma PREFETCH wirkt sich sogar auf alle Operationen mit einem Cursor aus.
Eine Annotation kann nur an gewissen Positionen im Text einer Anweisung stehen. Sie wirkt sich, abhängig von ihrer Position, nur auf eine bestimmte Operation in der Anweisung aus. An jeder dieser Positionen kann immer nur eine Annotation stehen. Eine Anweisung kann aber mehrere Annotationen enthalten, ebenso wie die verwendeten Views.
Pragmas und Annotationen wirken nur bei bestimmten Anweisungen, sonst werden sie ignoriert. Zur Verwendung von Pragmas in Routinen siehe Abschnitt „Pragmas in Routinen" .
Pragmas und Annotationen dienen unterschiedlichen Zwecken. Sie sind in unterschiedlichen Handbüchern von SESAM/SQL beschrieben, siehe die Tabellen auf den folgenden Seiten.
Format
pragma ::= --%PRAGMA
pragma_text ,...
zeilenende
annotation ::= /*%
annotation_text %*/
pragma_text
Eine Folge von Schlüsselwörtern, Literalen und Namen.
Die Folge darf Leerzeichen enthalten, aber keine anderen Trenner.
Die Formate für pragma_text und ihre Wirkung sind an folgenden Stellen beschrieben:
pragma_text beginnt mit | Bedeutung | Beschreibung siehe |
AUTONOMOUS | Daten unabhängig von der | |
CHECK | Integritätsbedingungen beachten | Handbuch „ SQL-Sprachbeschreibung Teil 2: Utilities“ |
DATA TYPE | alte CALL-DML-Typen verwenden | |
DEBUG ROUTINE | Fehlerinformationen für Routinen | |
DEBUG VALUE | Informationen für Zuweisungen in | |
EXPLAIN | Zugriffsplan ausgeben | |
IGNORE | Index ignorieren | Handbuch „ Performance“ |
ISOLATION LEVEL | Isolationslevel festlegen | |
JOIN | Join-Methode wählen | Handbuch „ Performance“ |
KEEP JOIN ORDER | Join-Reihenfolge beibehalten | Handbuch „ Performance“ |
LIMIT ABORT_EXECUTION | Betriebsmittelverbrauch limitieren | |
LOCK MODE | Sperrmodus einstellen | |
LOOP LIMIT | Anzahl Schleifendurchläufe | |
OPTIMIZATION | Zugriffsplanung einschränken | Handbuch „ Performance“ |
PREFETCH | Schubmodus steuern | |
SIMPLIFICATION | Optimierungstechniken steuern | Handbuch „ Performance“ |
USE | Index nutzen | Handbuch „ Performance“ |
UTILITY MODE | Transaktionssicherung steuern |
Tabelle 8: Pragmas
Wenn Sie in einer Anweisung mehrere Pragmas angeben, die mit dem gleichen Schlüsselwort beginnen, dann wird nur die letzte Angabe verwendet. Die Pragmas IGNORE und USE werden aber alle, unabhängig von ihrer Reihenfolge, nach speziellen Regeln interpretiert.
zeilenende
Zeilenwechsel im SQL-Quelltext.
Wenn der SQL-Text in einer Anweisung PREPARE oder EXECUTE IMMEDIATE als Zeichenkette angegeben wird, dann stellt darin das alphanumerische Zeichen X'15' einen Zeilenwechsel dar.
annotation_text
Eine Folge von Schlüsselwörtern.
Die Folge darf Leerzeichen und Zeilenwechsel enthalten, aber keine Kommentare.
Eine Annotation muss auf ein Schlüsselwort folgen. Dazwischen dürfen nur Leerzeichen und Zeilenwechsel stehen, aber keine Kommentare. Das vorangehende Schlüsselwort bestimmt das erlaubte Format von annotation_text und die Wirkung der Annotation. Eine Annotation, die nicht diesen Regeln folgt, wird als Kommentar betrachtet und ignoriert.
Die Formate für annotation_text und ihre Wirkung sind an folgenden Stellen beschrieben::
Annotation hinter Schlüsselwort | Bedeutung | Beschreibung siehe |
JOIN | Join-Algorithmus wählen | Handbuch „ Performance“ |
CACHE | CSV-Datei in temporärer | Handbuch „ Performance“ |
VOLATILE | Funktionswert stets neu | |
IMMUTABLE | Funktionswert in unkorrelierten |
Tabelle 9: Annotationen
Wenn sich ein Pragma und eine Annotation auf eine Operation in einer Anweisung unterschiedlich auswirken würden (z.B. eine unterschiedliche Wahl des Join-Algorithmus), dann hat normalerweise die Annotation Vorrang. Die Einzelheiten sind in der Beschreibung der Annotation enthalten.