Der C/C++-Precompiler übersetzt beim Durchführen des Precompiler-Laufs die im Anwendungsprogramm eingebetteten SQL-Anweisungen in Aufrufe von Prozeduren der Precompiler-Laufzeitumgebung und bereitet den Quellcode für den C/C++-Kompilierer vor.
Dabei führt der Precompiler die folgenden Aufgaben durch:
· Erzeugen der Deskriptor-Struktur sqlda
· Erzeugen der Struktur sqlca für die Rückmeldungen des Datenbanksystems
· Einbinden der Standard-Headerdatei cpc.h
· Syntaktisches Überprüfen der eingebetteten SQL-Anweisungen
· Erzeugen des Precompiler-Protokolls mit eventuellen Fehlermeldungen und Warnungen
Wenn Sie die Precompiler-Option check wählen, dann überprüft der Precompiler auch die Existenz der aufgerufenen Datenbanktabellen und Spalten sowie die Verträglichkeit der Datentypen und die Zugriffsprivilegien des Benutzers, indem er die eingebetteten SQL-Anweisungen an den Parser oder den Datenbankkern schickt. Die Wirkung aller so ausgeführten SQL-Anweisungen wird nach dem Abschluss des Precompiler-Laufs automatisch durch ein ROLLBACK wieder zurückgesetzt.
Anweisungen mit beim Precompiler-Lauf unbekannten Komponenten, zum Beispiel dynamische SQL-Anweisungen oder CONNECT-Anweisungen mit Host-Variablen, können grundsätzlich nur syntaktisch überprüft werden.
Die SQL-Anweisungen werden in der Reihenfolge ausgeführt, in der sie im Quellcode auftreten, nicht in der logischen Reihenfolge der Programmanweisungen.
Um die eingebetteten SQL-Anweisungen mit der Option check zu prüfen, muss der Precompiler eine Verbindung zur Datenbankinstanz herstellen. Dabei gelten die folgenden Regeln:
· Ist die statisch erste SQL-Anweisung einer Datenbanksitzung keine CONNECT-Anweisung, dann gelten alle Benutzerangaben des XUSER-Benutzerschlüssels DEFAULT.
· Ist die statisch erste SQL-Anweisung einer Datenbanksitzung eine CONNECT-Anweisung, werden alle Angaben dieser Anweisung und die fehlenden Angaben dem XUSER-Benutzerschlüssel DEFAULT entnommen.
· Für die erste Datenbanksitzung können Sie alle Benutzerangaben durch entsprechende Precompiler-Optionen übersteuern.