Definition von Embedded SQL

Embedded SQL

Embedded SQL (deutsch „eingebettetes SQL“, abgekürzt ESQL) ist eine Sprache zum Schreiben von Programmen, die mit Datenbanken interagieren.

SQL (Structured Query Language) ist eine Standard-Datenbankabfragesprache, während ESQL eine Programmiersprache ist, die es ermöglicht, SQL-Code in ein größeres Programm einzufügen. Embedded SQL ermöglicht die Spezifikation von SQL-Anweisungen zur Laufzeit und bietet Kompatibilität zu anderen relationalen Datenbanksystemen durch den ANSI-Standard.

Sie ermöglicht Entwicklern, Programme zu schreiben, die mit Datenbanken interagieren können, um Aufgaben wie das Abrufen von Daten, das Einfügen und Aktualisieren von Daten und das Löschen von Daten auszuführen. ESQL ist eine Kombination aus einer Datenmanipulationssprache (DML) und prozeduralen Sprachelementen wie Java und C.

Embedded SQL – Begriff

Nach IBM-Definition stellen eingebettete SQL-Anwendungen eine Verbindung zu Datenbanken her und führen eingebettete SQL-Anweisungen aus. Die eingebetteten SQL-Anweisungen sind in einem Paket enthalten, das an den Zieldatenbankserver gebunden werden muss. Die Verbindung der SQL-Anweisungen mit der Hotsprache, d.h. der Programmiersprache, erfolgt durch das Einbetten, d.h. das eingebettete SQL.

Eingebettetes SQL ist eine Programmiersprache, die Elemente von SQL und prozeduralen Programmiersprachen kombiniert, um Entwicklern zu ermöglichen, Programme zu schreiben, die mit Datenbanken interagieren können. Sie wird verwendet, um Anwendungen zu schreiben, die auf in einer Datenbank gespeicherte Daten zugreifen, diese manipulieren und aktualisieren können.

Entwickler müssen die Grundlagen von SQL und die Syntax der verwendeten Programmiersprache verstehen, um Embedded SQL verwenden zu können. Die Entwickler müssen sich auch mit der verwendeten Datenbank auskennen, da sie die Struktur der Datenbank und die Namen der Tabellen und Felder in der Datenbank kennen müssen.

Wie funktioniert ein eingebettetes SQL?

Kopplungsarten zwischen Datenbank- und Programmiersprachen:

  • Erweiterung der Datenbanksprache um Programmierkonstrukte (z.B. PL/SQL);
  • Erweiterung der Programmiersprache um Datenbankkonstrukte: Persistente Programmiersprachen (Persistent Java – dann kein SQL als Abfragesprache);
  • Datenbankzugriff aus einer Programmiersprache heraus (JDBC);
  • Einbettung der Datenbanksprache in eine Programmiersprache: „Embedded SQL“ (C, Pascal, Java/SQLJ).

Bei Embedded SQL werden SQL-Befehle in normale Programme (Host-Programme, die in einer beliebigen Host-Sprache wie COBOL, Pascal, C++, Java geschrieben sind) eingefügt.

Auswirkungen auf die Hostsprache:

  • die Struktur der Hostsprache bleibt unverändert,
  • spezielle Anweisungen für den Verbindungsaufbau,
  • jede SQL-Anweisung kann eingebettet werden,
  • Verwendung von “Host-Variablen” (der umgebenden Programmiersprache) in SQL-Anweisungen,
  • SQL-Anweisungen wird EXEC SQL (oder etwas anderes) vorangestellt.

Ein Precompiler übersetzt die SQL-Anweisungen in äquivalenten Quellcode, so dass das Programm z.B. nur noch aus C-Code besteht und anschließend mit einem normalen C-Compiler übersetzt werden kann. Die folgenden Anweisungen sind in Embedded SQL erlaubt:

  • ausführbare SQL-Anweisungen
  • zum Aufbau der Verbindung zur Datenbank
  • zur Definition, Abfrage und Manipulation von Daten in der Datenbank
  • zur Zugriffssteuerung und Transaktionsverwaltung
  • deklarative SQL-Anweisungen zur Deklaration von Kommunikationspuffern und SQL-Variablen
  • statische SQL-Anweisungen
  • dynamische SQL-Anweisungen

Eingebettetes SQL ist effizient und einfach zu verwenden, da es Entwicklern ermöglicht, Programme zu schreiben, die schnell und einfach mit Datenbanken interagieren können. Darüber hinaus ermöglicht es Entwicklern, komplexe Anwendungen mit weniger Codezeilen zu schreiben.

Einer der Hauptnachteile bei der Verwendung von Embedded SQL ist jedoch, dass die Fehlerbehebung und Wartung schwierig sein kann. Auch die Portierung von in Embedded SQL geschriebenen Anwendungen auf andere Plattformen kann sich als schwierig erweisen.