next up previous contents
Next: Statisches SQL Up: SQL Previous: PL/SQL

Embedded SQL

Das ursprüngliche Ziel der Entwickler von Embedded SQL war der Entwurf einer Sprache, die sowohl interaktiv nutzbar als auch in 3.Generationssprachen einbettbar sein sollte. Mit Embedded SQL erreicht man eine Datenbankanbindung bestehender 3. Generationssprachen. Embedded SQL erlaubt die Spezifikation von SQL-Anweisungen zur Laufzeit und bietet Kompatibilität zu anderen relationalen Datenbanksystemen durch den ANSI-Standard. Im Gegensatz zu PL/SQL hat man auch die Möglichkeit, die Ergebnisse in ansprechender Form auszugeben. Das entstehende Programm ist allerdings eng an die Datenbankstruktur gebunden.

In Embedded SQL werden SQL Befehle in normale Programme (Hostprogramme, geschrieben in einer beliebigen Hostsprache wie COBOL, Pascal oder C) eingefügt. Diese Befehle beginnen und enden dabei mit speziellen Anfangs- und Endsequenzen (zum Beispiel Beginn mit "`EXEC SQL"' und Ende mit "`;"'). Ein Precompiler übersetzt die SQL Befehle in äquivalenten Quellcode, sodaß das Programm zum Beispiel nur mehr C-Code enthält und anschließend mit einem normalen C-Compiler übersetzt werden kann. Folgende Anweisungen sind in Embedded SQL erlaubt:

Das nächste Beispiel bestimmt den Vornamen des Autors White. Wenn ein Vorname gefunden wurde, wird dieser ausgegeben.

 nnnnnn¯ 
main()

{

EXEC SQL BEGIN DECLARE SECTION;

char firstName[50];

char lastName[] = "White";

unsigned short firstNameNull;

EXEC SQL END DECLARE SECTION;

EXEC SQL CONNECT TO server USER login.password;

EXEC SQL SELECT auFirstName INTO :firstName :firstNameNull

FROM Authors WHERE auLastName = :lastName;

if (firstNameNull <> -1) printf("%s %s", firstName, lastName);

return (0);

}

In Embedded SQL verwendet man Hostvariablen zur Kommunikation der Daten zwischen der Datenbank und dem Anwendungsprogramm ( firstName, lastName). Innerhalb von SQL-Anweisungen wird den Hostvariablen ein "`:"' vorangestellt, um sie von Datenbank-Objekten wie Tabellen oder Spalten mit demselben Namen unterscheiden zu können. Hostvariablen kann man optional Indikatorvariablen ( firstNameNull) zuordnen, indem man sie in der SQL-Anweisung direkt hinter die eigentliche Hostvariable schreibt. Indikatorvariablen zeigen an, ob der Wert der Hostvariablen ein Nullwert ist oder ob zum Beispiel bei der Zuweisung Werte abgeschnitten wurden.

Im folgenden wird eine kurze Übersicht über die einzelnen Embedded SQL-Befehle gegeben.



next up previous contents
Next: Statisches SQL Up: SQL Previous: PL/SQL



Christoph Steindl
Thu Jul 24 14:37:19 MET DST 1997