sql >> Database >  >> RDS >> Oracle

Inleiding tot native dynamische SQL in Oracle Database

Native dynamische SQL

Voordat je Native dynamische SQL gaat leren, is een korte achtergrond belangrijk. Oracle gaf in mei 1994 een midzomergeschenk aan alle ontwikkelaars door het Dynamic SQL-concept te introduceren in de databaseversie 7.1 (ook bekend als Oracle 7.1). Hiermee konden ontwikkelaars de dynamische SQL schrijven via het "DBMS_SQL" -pakket.

Maar geleidelijk aan begon de DBMS_SQL-bibliotheek zijn charme te verliezen. Vanwege de "niet zo gemakkelijke" syntaxis, de "trage prestaties" en "niet-ondersteunde door de gebruiker gedefinieerde typen". Door al deze tekortkomingen ontstond de behoefte aan iets anders. Wat de ontwikkelaars zou kunnen helpen bij het schrijven van een goed geoptimaliseerde code zonder al te veel stress op hun hoofd te leggen.

Oracle nam de tijd, bijna vijf jaar. Ten slotte bracht het een verbeterde versie van Dynamic SQL uit met de lancering van Oracle Database 8i of om precies te zijn Oracle Database versie 8.1.5 in februari 1999. Vanwege het stabiele karakter werd deze verbeterde versie van Dynamic SQL het native onderdeel van de PL/ SQL-taal en kreeg de naam "Native Dynamic SQL" waardoor het tegenwoordig bekend is. Dat is een korte introductie van het ontstaan ​​van de native dynamische SQL in Oracle Database.

Om de native dynamische SQL te begrijpen, moeten we eerst begrijpen wat statische SQL is in Oracle Database?

Wat is statische SQL?

Zoals de naam al doet vermoeden, wordt elke SQL-instructie die tijdens runtime niet verandert, een statische SQL-instructie genoemd.

Het voordeel van statische SQL-instructies is dat we al weten of alle afhankelijke objecten waarover we de instructie schrijven, aanwezig zijn of niet. Een ander voordeel van statische SQL-instructies is dat we ze hardcoderen in onze applicatie. Zo kunnen we ze afstemmen voor optimale prestaties.

Nu we hebben geleerd wat statische SQL is, laten we eens kijken wat dynamische SQL is?

Wat is native dynamische SQL?

Nogmaals, zoals de naam al doet vermoeden, wordt elke SQL-instructie die tijdens runtime wordt geconstrueerd, dynamische SQL genoemd . Deze verklaringen zijn on-the-fly opgebouwd. Daarom kunnen ze niet hardcoded worden in de applicatie. Dit verhoogt op zijn beurt hun flexibiliteit.

Enerzijds kunt u met statische SQL alleen DML-instructies uitvoeren binnen uw PL/SQL-blok. Aan de andere kant stelt de dynamische SQL je in staat om DDL-statements uit te voeren en dat ook binnen je PL/SQL-blok. Dus door Dynamic SQL te gebruiken, kunt u een tabel maken of een index neerzetten of uw tabel afkappen binnen uw PL/SQL-blok. Dit is een voordeel van Native Dynamic SQL ten opzichte van statische SQL.

Wat is Native Dynamic PL/SQL?

Net als bij dynamische SQL, wordt het proces van het construeren van PL/SQL-code tijdens runtime dynamische PL/SQL genoemd.

Laten we nu eens kijken naar de voordelen van Native Dynamic SQL ten opzichte van het DBMS_SQL-pakket in Oracle Database.

Voordelen van native dynamische SQL

  • Eenvoudig te gebruiken codes: In vergelijking met het DBMS_SQL-pakket is de native dynamische SQL veel gemakkelijk te gebruiken. Dit komt vooral omdat het in de SQL zelf is opgenomen. Het komt overeen met het gebruik van statische SQL binnen een PL/SQL-code. Ook is native dynamische SQL-code compacter en leesbaarder dan het DBMS_SQL-pakket. Dit laatste vereist een groot aantal codes vanwege strikte sequentiële procedures. Het maakt het complexer.
  • Verbetering van de prestaties van de code: Er is ingebouwde ondersteuning voor native dynamische SQL in de PL/SQL-interpreter. Dus de programma's die het gebruiken zijn efficiënter dan diegene die het DBMS_SQL-pakket gebruiken. In principe combineert native dynamische SQL de stappen met betrekking tot voorbereiding, binding en uitvoering in één bewerking. Dit vermindert de overhead voor procedureaanroepen en het kopiëren van gegevens, wat op zijn beurt de prestaties verbetert.
  • Ondersteuning voor door de gebruiker gedefinieerde typen: In tegenstelling tot het DBMS_SQL-pakket, ondersteunt de native dynamische SQL allerlei door de gebruiker gedefinieerde typen. Bijvoorbeeld door de gebruiker gedefinieerde objecten, REF's &collecties.
  • Ondersteuning voor het ophalen van records: De rijen die het resultaat zijn van een query kunnen direct worden opgehaald in PL/SQL-records met behulp van native dynamische SQL. Dit is niet mogelijk met het DBMS_SQL-pakket.

Wat zijn de functionaliteiten van Dynamic SQL in Oracle Database?

  1. Ten eerste dynamische DDL en DML met het gebruik van een willekeurige bindvariabele.
  2. Ten tweede, dynamische DQL en
  3. Ten derde, dynamische DML die een bekende lijst met bindvariabelen gebruikt

Dit zijn de drie functionaliteiten die Dynamic SQL toevoegt aan uw PL/SQL-programmering.

Dus, hoe gebruiken we dynamische SQL in Oracle Database?

De twee meest gebruikelijke methoden voor het gebruik van dynamische SQL en PL/SQL in Oracle Database zijn:

  1. Voer onmiddellijke verklaring uit en
  2. Open-For, Fetch &Close-blok.

Execute Immediate-instructie wordt gebruikt wanneer de query gegevens met één rij retourneert. Als de query gegevens met meerdere rijen retourneert, kunt u de hulp gebruiken van Open-For, Fetch en close block. We zullen in de komende tutorials in detail leren over Execute Immediate en Open-for, fetch en close block.

Zijn er andere manieren om Dynamic SQL te gebruiken in Oracle Database?

Naast de hierboven genoemde meest gebruikte methoden, zijn de andere manieren om dynamische SQL of PL/SQL te gebruiken

  • Met Bulk Ophalen
  • Ten tweede met Bulk Execute Immediate
  • Samen met Bulk FORALL en
  • Ten slotte met de instructie Bulk Collect Into

We hebben alle bovenstaande commando's en uitspraken geleerd in de vorige serie over bulkgegevensverwerking.

Als je het leuk vindt om door middel van video-tutorials te leren, ga je gang en bekijk het eens.

Dat is een gedetailleerde introductie tot de Native Dynamic SQL in Oracle Database. Ik hoop dat je het leuk vond om te lezen. Zorg ervoor dat u De link van deze blog deelt met je vrienden op je sociale media. Zorg er ook voor dat je je abonneert op het YouTube-kanaal om deze serie te volgen en iets nieuws en interessants te leren.

Bedankt en een fijne dag verder!


  1. Linux - PHP 7.0 en MSSQL (Microsoft SQL)

  2. Wijzigingen in een beschrijfbare partitie kunnen onverwacht mislukken

  3. TIME_FORMAT() Voorbeelden – MySQL

  4. Bestel varchar string als numeriek