Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
Omdat een ingesloten SQL-programma een combinatie van SQL- en hosttaalinstructies bevat, kan het niet rechtstreeks worden verzonden naar een compiler voor de hosttaal. In plaats daarvan wordt het gecompileerd via een proces met meerdere stappen. Hoewel dit proces verschilt van product tot product, zijn de stappen ongeveer hetzelfde voor alle producten.
In deze afbeelding ziet u de stappen die nodig zijn om een ingesloten SQL-programma te compileren.
Er zijn vijf stappen betrokken bij het compileren van een ingesloten SQL-programma:
Het ingesloten SQL-programma wordt verzonden naar de SQL-precompiler, een programmeerprogramma. De precompiler scant het programma, zoekt de ingesloten SQL-instructies en verwerkt deze. Er is een andere voorcompiler vereist voor elke programmeertaal die wordt ondersteund door DBMS. DBMS-producten bieden doorgaans precompilers voor een of meer talen, waaronder C, Pascal, COBOL, Fortran, Ada, PL/I en verschillende assemblytalen.
De precompiler produceert twee uitvoerbestanden. Het eerste bestand is het bronbestand, verwijderd van de ingesloten SQL-instructies. In hun plaats vervangt de precompiler aanroepen naar bedrijfseigen DBMS-routines die de runtimekoppeling tussen het programma en de DBMS bieden. Normaal gesproken zijn de namen en de aanroepende reeksen van deze routines alleen bekend bij de precompiler en de DBMS; ze zijn geen openbare interface voor de DBMS. Het tweede bestand is een kopie van alle ingesloten SQL-instructies die in het programma worden gebruikt. Dit bestand wordt ook wel een databaseaanvraagmodule of DBRM genoemd.
De uitvoer van het bronbestand van de precompiler wordt verzonden naar de standaardcompilator voor de hostprogrammeertaal (zoals een C- of COBOL-compiler). De compiler verwerkt de broncode en produceert objectcode als uitvoer. Houd er rekening mee dat deze stap niets te maken heeft met dbms of sql.
De linker accepteert de objectmodules die door de compiler worden gegenereerd, koppelt deze aan verschillende bibliotheekroutines en produceert een uitvoerbaar programma. De bibliotheekroutines die zijn gekoppeld aan het uitvoerbare programma bevatten de eigen DBMS-routines die in stap 2 worden beschreven.
De databaseaanvraagmodule die door de precompiler wordt gegenereerd, wordt verzonden naar een speciaal bindingshulpprogramma. Dit hulpprogramma onderzoekt de SQL-instructies, parseert, valideert en optimaliseert deze en produceert vervolgens een toegangsplan voor elke instructie. Het resultaat is een gecombineerd toegangsplan voor het hele programma, dat een uitvoerbare versie van de ingesloten SQL-instructies vertegenwoordigt. Het bindingshulpprogramma slaat het plan op in de database en wijst het meestal de naam toe van het toepassingsprogramma dat het gaat gebruiken. Of deze stap plaatsvindt tijdens het compileren of uitvoeren, is afhankelijk van de DBMS.
U ziet dat de stappen die worden gebruikt voor het compileren van een ingesloten SQL-programma, zeer nauw correleren met de stappen die eerder zijn beschreven in het verwerken van een SQL-instructie. U ziet met name dat de precompiler de SQL-instructies scheidt van de code van de hosttaal en dat het bindingshulpprogramma de SQL-instructies parseert en valideert en de toegangsplannen maakt. In DBMSs waarbij stap 5 plaatsvindt tijdens het compileren, vinden de eerste vier stappen voor het verwerken van een SQL-instructie plaats tijdens het compileren, terwijl de laatste stap (uitvoering) plaatsvindt tijdens de runtime. Dit zorgt ervoor dat het uitvoeren van query's in dergelijke DBMS's zeer snel gaat.