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

SAP Sybase SQL Anywhere 16.0 (Deutsch) » SQL Anywhere Server - Programmierung » Embedded SQL

 

Der SQL-Präprozessor

Der SQL-Präprozessor ist eine Programmdatei namens sqlpp.

Die Präprozessor-Befehlszeile sieht wie folgt aus:

sqlpp [ options ] sql-filename [ output-filename ]

Der Präprozessor übersetzt die Embedded SQL-Anweisungen in einer C- oder C++-Quelldatei in C-Code und schreibt das Ergebnis in eine Ausgabedatei. Ein C- oder C++-Compiler wird für die Verarbeitung der Ausgabedatei eingesetzt. Die normale Dateinamenerweiterung für Quelldateien mit Embedded SQL ist .sqc. Der voreingestellte Name für die Ausgabedatei ist sql-filename mit der Erweiterung .c. Wenn sql-filename die Erweiterung .c hat, wird die Standarderweiterung für die Ausgabedatei auf .cc geändert.

Hinweis

Wenn eine Anwendung für die Verwendung mit einer neuen Version der Datenbank-Interfacebibliothek neu aufgebaut wird, müssen die Embedded SQL-Dateien mit einem SQL-Präprozessor derselben Version vorverarbeitet werden.

Die folgende Tabelle beschreibt die Präprozessoroptionen.

Option Beschreibung
-d Code erzeugen, der die Größe des Datenbereichs reduziert. Datenstrukturen werden vor der Verwendung zur Ausführungszeit wieder benutzt und initialisiert. Dies erhöht die Code-Größe.
-e Stufe

Kennzeichnet jedes Static Embedded SQL-Element als Fehler, das nicht Teil eines angegebenen Standards ist. Der Wert Stufe gibt den zu verwendenden Standard an. Beispiel: sqlpp -e c03 ... kennzeichnet alle Syntaxelemente, die nicht Teil des SQL/2008-Kernstandards sind. Die folgenden Werte werden für Stufe unterstützt:

  • c08   Kennzeichnet Syntax, die nicht SQL/2008-Kernsyntax ist

  • p08   Kennzeichnet Syntax, die nicht Full-SQL/2008-Syntax ist

  • c03   Kennzeichnet Syntax, die nicht SQL/2003-Kernsyntax ist

  • p03   Kennzeichnet Syntax, die nicht Full-SQL/2003-Syntax ist

  • c99   Kennzeichnet Syntax, die nicht SQL/1999-Kernsyntax ist

  • p99   Kennzeichnet Syntax, die nicht Full-SQL/1999-Syntax ist

  • e92   Kennzeichnet Syntax, die nicht Entry-Level der SQL/1992 Syntax ist

  • i92   Kennzeichnet Syntax, die nicht Intermediate-Level der SQL/1992 Syntax ist

  • f92   Kennzeichnet Syntax, die nicht Full-SQL/1992 Syntax ist

  • t   Kennzeichnet Nicht-Standard-Hostvariablentypen

  • u   Kennzeichnet Syntax, die nicht von UltraLite unterstützt wird

Für die Kompatibilität mit früheren Versionen von SQL Anywhere können Sie auch e, i und f angeben, die e92, i92 bzw. f92 entsprechen.

-h Breite Begrenzt die maximale Länge von Ausgabezeilen durch sqlpp auf Breite. Das Fortsetzungszeichen ist ein Backslash (\) und der Mindestwert von Breite ist 10.
-k Teilt dem Präprozessor mit, dass das zu kompilierende Programm eine Benutzerdeklaration von SQLCODE enthält Die Definition muss vom Typ "long" sein, doch sie muss sich nicht in einem Deklarationsabschnitt befinden.
-m Modus

Geben Sie den Cursor-Aktualisierbarkeitsmodus an, falls dieser nicht explizit in der Embedded SQL-Anwendung angegeben ist. Der Modus kann einer der folgenden sein:

  • HISTORICAL   In früheren Versionen nahmen Embedded SQL-Cursor standardmäßig den Wert FOR UPDATE oder READ ONLY an (abhängig von der Abfrage und dem ansi_update_constraints-Optionswert). Explizite Cursor-Aktualisierbarkeit wurde in DECLARE CURSOR angegeben. Verwenden Sie diese Option, um dieses Verhalten beizubehalten.

  • READONLY   Embedded SQL-Cursor werden standardmäßig auf READ ONLY gesetzt. Explizite Cursor-Aktualisierbarkeit wird in PREPARE angegeben. Dies ist die Standardeinstellung. READ ONLY-Cursor können zu einer verbesserten Performance führen.

-n Erzeugt Zeilennummerinformationen in der C-Datei. Diese umfassen #line-Direktiven an den betreffenden Stellen im erzeugten C-Code. Wenn der von Ihnen verwendete Compiler die Anweisung #line unterstützt, lässt diese Option den Compiler Fehler in Zeilennummern in der SQC-Datei protokollieren (der Datei mit Embedded SQL), und zwar im Gegensatz zum Protokollieren von Fehlern in Zeilennummern in der C-Datei, die vom SQL-Präprozessor erzeugt wird. Ebenso werden die #line-Anweisungen indirekt vom Source Level Debugger verwendet, sodass Sie bei der Fehlersuche gleichzeitig die SQC-Quelldatei sehen können.
-o Betriebssystem

Geben Sie das Zielbetriebssystem an. Folgende Betriebssysteme werden unterstützt:

  • WINDOWS   Microsoft Windows, einschließlich Windows Mobile.

  • UNIX   Verwenden Sie diese Option, wenn Sie eine 32-Bit-Unix-Anwendung erstellen.

  • UNIX64   Verwenden Sie diese Option, wenn Sie eine 64-Bit-Unix-Anwendung erstellen.

-q Dialogfreier Modus - keine Meldungen ausgeben.

-r-

Nicht wiedereintretenden (non-reentrant) Code generieren.
-s Länge Setzt die maximale Größe für Zeichenfolgen fest, die der Präprozessor in die C-Datei ausgibt. Zeichenfolgen, die länger als dieser Wert sind, werden mithilfe einer Liste von Zeichen initialisiert ('a','b','c' etc.). Die meisten C-Compiler sind in der Größe der Zeichenfolgenliterale begrenzt, die Sie handhaben können. Mit dieser Option wird die obere Grenze festgesetzt. Der Standardwert ist 500.
-u Code für UltraLite generieren.
-w Stufe

Kennzeichnet jedes Static Embedded SQL-Element als Warnung, das nicht Teil eines angegebenen Standards ist. Der Wert Stufe gibt den zu verwendenden Standard an. Beispiel: sqlpp -w c08 ... kennzeichnet alle SQL-Syntaxelemente, die nicht Teil der SQL/2008-Kernsyntax sind. Die folgenden Werte werden für Stufe unterstützt:

  • c08   Kennzeichnet Syntax, die nicht SQL/2008-Kernsyntax ist

  • p08   Kennzeichnet Syntax, die nicht Full-SQL/2008-Syntax ist

  • c03   Kennzeichnet Syntax, die nicht SQL/2003-Kernsyntax ist

  • p03   Kennzeichnet Syntax, die nicht Full-SQL/2003-Syntax ist

  • c99   Kennzeichnet Syntax, die nicht SQL/1999-Kernsyntax ist

  • p99   Kennzeichnet Syntax, die nicht Full-SQL/1999-Syntax ist

  • e92   Kennzeichnet Syntax, die nicht Entry-Level der SQL/1992 Syntax ist

  • i92   Kennzeichnet Syntax, die nicht Intermediate-Level der SQL/1992 Syntax ist

  • f92   Kennzeichnet Syntax, die nicht Full-SQL/1992 Syntax ist

  • t   Kennzeichnet Nicht-Standard-Hostvariablentypen

  • u   Kennzeichnet Syntax, die nicht von UltraLite unterstützt wird

Für die Kompatibilität mit früheren Versionen von SQL Anywhere können Sie auch e, i und f angeben, die e92, i92 bzw. f92 entsprechen.

-x Ändert Mehrbyte-Zeichenfolgen in Escape-Sequenzen, sodass sie vom Compiler verarbeitet werden können.
-z cs

Geben Sie die Kollationssequenz an. Um eine Liste mit den empfohlenen Kollationssequenzen zu erhalten, führen Sie an der Eingabeaufforderung dbinit -l aus.

Die Kollationssequenz hilft dem Präprozessor, die Zeichen zu verstehen, die im Quellcode des Programms verwendet werden, z.B. bei der Identifizierung von alphabetischen Zeichen, die für die Verwendung in Bezeichnern geeignet sind. Wenn -z nicht angegeben ist, versucht der Präprozessor eine sinnvolle Kollation zu ermitteln, basierend auf dem Betriebssystem sowie den Umgebungsvariablen SALANG und SACHARSET.

sql-filename Ein C- oder C++-Programm, das zu verarbeitende Embedded SQL-Elemente enthält
output-filename Die C-Quelldatei, die vom SQL-Präprozessor erstellt wurde
 Siehe auch