ESQL

ESQL
Redundanz Die Artikel Embedded SQL und Inline-SQL überschneiden sich thematisch. Hilf mit, die Artikel besser voneinander abzugrenzen oder zu vereinigen. Beteilige dich dazu an der Diskussion über diese Überschneidungen. Bitte entferne diesen Baustein erst nach vollständiger Abarbeitung der Redundanz. YMS 17:19, 2. Jun. 2008 (CEST)

Embedded SQL (abgekürzt: ESQL) ist eine Spracherweiterung von SQL, mit der es möglich ist, SQL-Anweisungen innerhalb einer strukturierten oder objektorientierten Programmiersprache (der Hostsprache, typischerweise C, C++, COBOL, Ada, Pascal o. ä.) auszuführen.

Blöcke mit SQL-Anweisungen und -Deklarationen werden dabei, in bestimmte Embedded-SQL-Schlüsselwörter eingeschlossen, in den Code der Hostsprache eingefügt. Der SQL-Anteil am Quellcode wird entweder von dem Compiler selbst mit übersetzt (so machen es einige COBOL-Compiler) oder ein Precompiler wandelt die SQL-Anweisungen zuvor in normalen Code der Hostsprache um, der dann mit deren Compiler normal übersetzt werden kann. Der umgewandelte Code enthält Aufrufe der Schnittstelle zur Datenbank. Diese Schnittstelle muss als Bibliothek in das fertige Programm gelinkt werden. Die Bibliothek ist abhängig von der verwendeten Datenbank und wird gewöhnlich vom jeweiligen Datenbankhersteller geliefert, soweit dieser Embedded SQL überhaupt unterstützt.

Embedded SQL ist im SQL92-Standard definiert. Programme mit ESQL sollten daher, so lange keine proprietären Eigenschaften des jeweiligen SQL-Dialektes verwendet werden, kompatibel mit Datenbanken verschiedener Hersteller sein, allerdings nur auf Ebene des Quellcodes. Das heißt, dass bei Wechsel des Datenbankfabrikats, manchmal sogar beim Versionsupdate der gleichen Datenbank, der Quellcode durch den ESQL-Precompiler und Compiler neu übersetzt und gegen die aktuelle Bibliothek gelinkt werden muss. Dies unterscheidet Embedded SQL von Konzepten mit ähnlichem Einsatzzweck wie ODBC, wo beim Wechsel der Datenbank (theoretisch) nur ein Treiber ausgewechselt wird und das compilierte Programm weiter verwendet werden kann. Es gibt allerdings mindestens einen COBOL-Compiler, der ESQL-Anweisungen in Aufrufe von ODBC umwandelt.

Der große Vorteil dieses Ansatzes der Datenbankanbindung liegt darin, dass zur Compilezeit die SQL-Syntax und die Typverträglichkeit der Schnittstellenvariablen geprüft werden kann. Auf diesen großen Vorteil verzichtet man gänzlich, wenn man eine rein laufzeitgebundene Architektur (ODBC, ADO, ADO.NET, ...) verwendet.

Die Kommunikation zwischen SQL und dem Anwendungsprogramm erfolgt per Hostvariablen. Werden diese Hostvariablen in einem SQL-Ausdruck benützt, so wird ihnen ein Doppelpunkt voran gestellt.

Beispiel:

EXEC SQL
SELECT vorname, nachname
INTO :vorname, :nachname
FROM mitarbeitertabelle
WHERE pnr = :pnr
;

Vor der Ausführung des SQL-Befehls muss in der umgebenden Programmiersprache die Variable 'pnr' mit einem Wert belegt werden. Nach Ausführung des SQL-Befehls sind die Variablen 'vorname' und 'nachname' mit Werten belegt - sofern überhaupt ein Satz gefunden wurde.

In einer Datenbank-Tabelle können Spalten mit Null-Werten definiert werden. Bei den meisten Programmiersprachen (mit Ausnahme von PL/SQL) können Variablen nicht mit Null-Werten belegt werden, sondern eine Variable ist immer mit irgend einem Wert belegt.

Wenn auf Tabellenspalten zugegriffen werden soll, die auch Null-Werte enthalten, dann müssen Indikatorvariablen verwendet werden. Sie müssen vom Typ int angelegt werden. Diese Variable wird auf einen Wert kleiner 0 gesetzt, falls die Spalte in der Datenbank Null enthält.

Beispiel:

EXEC SQL
SELECT vorname, nachname
INTO :vorname :i_vorname, :nachname :i_nachname
FROM mitarbeitertabelle
WHERE pnr = :pnr
;

Die Variablen 'vorname' und 'nachname' werden hier - wie auch im Beispiel oben - zur Aufnahme der gelesenen Werte verwendet. Zusätzlich geben die Indikatorvariablen 'i_vorname' und 'i_nachname' an, ob der Vorname und der Nachname überhaupt vorhanden war. Wenn z.B. nur der Nachname gespeichert war und der Vorname unbekannt (Null) war, dann wurde 'i_nachname' mit 0 und 'i_vorname' mit -1 belegt.


Wikimedia Foundation.

Игры ⚽ Нужен реферат?

Schlagen Sie auch in anderen Wörterbüchern nach:

  • ESQL — …   Википедия

  • ESQL — Embedded SQL, unter dem jeweiligen Betriebssystem benutzbarer SQL Instruktionssatz …   Acronyms

  • ESQL/C — Embedded SQL in C Schnittstellendefinition für Benutzung von SQL Datenbankanweisungen in C Programmen …   Acronyms

  • ESQL — Embedded SQL, unter dem jeweiligen Betriebssystem benutzbarer SQL Instruktionssatz …   Acronyms von A bis Z

  • ESQL/C — Embedded SQL in C Schnittstellendefinition für Benutzung von SQL Datenbankanweisungen in C Programmen …   Acronyms von A bis Z

  • ESQL/COBOL — Embedded SQL in COBOL Schnittstellendefinition für Benutzung von SQL Datenbankanweisungen in C Programmen …   Acronyms

  • ESQL/COBOL — Embedded SQL in COBOL Schnittstellendefinition für Benutzung von SQL Datenbankanweisungen in C Programmen …   Acronyms von A bis Z

  • Embedded SQL — (eingebettetes SQL, abgekürzt: ESQL) ist eine Spracherweiterung von SQL, mit der es möglich ist, SQL Anweisungen innerhalb einer strukturierten oder objektorientierten Programmiersprache (der Hostsprache, typischerweise C, C++, COBOL, Ada, Pascal …   Deutsch Wikipedia

  • IBM Informix-4GL — Informix 4GL is a 4GL programming language developed by Informix during the mid 1980s. It includes embedded SQL, a report writer language, a form language, and a limited set of imperative capabilities (functions, if and while statements,… …   Wikipedia

  • Microsoft Data Access Components — MDAC redirects here. For other uses, see MDAC (disambiguation). MDAC (Microsoft Data Access Components) Microsoft Corporation s MDAC provides a uniform framework for accessing a variety of data sources on their Windows platform. Developer(s)… …   Wikipedia

Share the article and excerpts

Direct link
Do a right-click on the link above
and select “Copy Link”