Delen via


Ingesloten SQL

De eerste techniek voor het verzenden van SQL-instructies naar de DBMS is ingesloten SQL. Omdat SQL geen variabelen en controle-of-stroominstructies gebruikt, wordt het vaak gebruikt als een databasesubtaal die kan worden toegevoegd aan een programma dat is geschreven in een conventionele programmeertaal, zoals C of COBOL. Dit is een centraal idee van ingesloten SQL: SQL-instructies plaatsen in een programma dat is geschreven in een hostprogrammeertaal. Kort gezegd worden de volgende technieken gebruikt voor het insluiten van SQL-instructies in een hosttaal:

  • Ingesloten SQL-instructies worden verwerkt door een speciale SQL-precompiler. Alle SQL-instructies beginnen met een introductie en eindigen met een afsluiter, die beide de SQL-instructie voor de precompiler markeren. De introductie- en afsluiter variëren met de hosttaal. De introductie is bijvoorbeeld 'EXEC SQL' in C en '&SQL' in MUMPS, en de afsluiter is een puntkomma (;) in C en een haakje rechts in MUMPS.

  • Variabelen uit het toepassingsprogramma, hostvariabelen genoemd, kunnen worden gebruikt in ingesloten SQL-instructies waar constanten zijn toegestaan. Deze kunnen worden gebruikt voor invoer om een SQL-instructie aan te passen aan een bepaalde situatie en op uitvoer om de resultaten van een query te ontvangen.

  • Query's die één rij met gegevens retourneren, worden verwerkt met een singleton SELECT-instructie; deze instructie geeft zowel de query als de hostvariabelen op waarin gegevens moeten worden geretourneerd.

  • Query's die meerdere rijen met gegevens retourneren, worden verwerkt met cursors. Met een cursor wordt de huidige rij in een resultatenset bijgehouden. De INSTRUCTIE DECLARE CURSOR definieert de query, de OPEN-instructie begint met de verwerking van de query, de FETCH-instructie haalt opeenvolgende rijen met gegevens op en de INSTRUCTIE CLOSE beëindigt de verwerking van de query.

  • Terwijl een cursor is geopend, kunnen gepositioneerde update- en delete-instructies worden gebruikt om de rij die momenteel door de cursor is geselecteerd, bij te werken of te verwijderen.

Deze sectie bevat de volgende onderwerpen.