Freigeben über


Embedded SQL

Die erste Technik zum Senden von SQL-Anweisungen an das DBMS ist eingebettetes SQL. Da SQL keine Variablen und Ablaufsteuerungsanweisungen verwendet, wird sie häufig als Datenbankuntersprache verwendet, die einem Programm hinzugefügt werden kann, das in einer herkömmlichen Programmiersprache wie C oder COBOL geschrieben wurde. Dies ist eine zentrale Idee von embedded SQL: Platzieren von SQL-Anweisungen in einem Programm, das in einer Hostprogrammsprache geschrieben wurde. Kurz gesagt werden die folgenden Techniken verwendet, um SQL-Anweisungen in eine Hostsprache einzubetten:

  • Eingebettete SQL-Anweisungen werden von einem speziellen SQL-Vorkompilierer verarbeitet. Alle SQL-Anweisungen beginnen mit einem Einführungs- und Enden mit einem Terminator, der beide die SQL-Anweisung für die Vorkompilierung kennzeichnen. Der Einführungs- und Endpunkt variieren je nach Hostsprache. Der Einführungsgeber ist beispielsweise "EXEC SQL" in C und "&SQL(" in MUMPS, und der Terminator ist ein Semikolon (;) in C und einer rechten Klammer in MUMPS.

  • Variablen aus dem Anwendungsprogramm, die als Hostvariablen bezeichnet werden, können in eingebetteten SQL-Anweisungen verwendet werden, wo Konstanten zulässig sind. Diese können für die Eingabe verwendet werden, um eine SQL-Anweisung auf eine bestimmte Situation und die Ausgabe anzupassen, um die Ergebnisse einer Abfrage zu empfangen.

  • Abfragen, die eine einzelne Datenzeile zurückgeben, werden mit einer SINGLEton SELECT-Anweisung behandelt. Diese Anweisung gibt sowohl die Abfrage als auch die Hostvariablen an, in denen Daten zurückgegeben werden sollen.

  • Abfragen, die mehrere Datenzeilen zurückgeben, werden mit Cursorn behandelt. Ein Cursor verfolgt die aktuelle Zeile innerhalb eines Resultsets. Die DECLARE CURSOR-Anweisung definiert die Abfrage, die OPEN-Anweisung beginnt mit der Abfrageverarbeitung, die FETCH-Anweisung ruft aufeinander folgende Datenzeilen ab, und die CLOSE-Anweisung beendet die Abfrageverarbeitung.

  • Während ein Cursor geöffnet ist, können positionierte Aktualisierungs- und positionierte Löschanweisungen verwendet werden, um die aktuell vom Cursor ausgewählte Zeile zu aktualisieren oder zu löschen.

In diesem Abschnitt werden die folgenden Themen behandelt: