sql >> Database teknologi >  >> RDS >> Oracle

Introduktion til Native Dynamic SQL i Oracle-databasen

Native Dynamic SQL

Før du begynder at lære Native dynamisk SQL, er en kort baggrund vigtig. Oracle gav en midsommergave i maj 1994 til alle udviklerne ved at introducere Dynamic SQL-konceptet i sin databaseversion 7.1 (alias Oracle 7.1). Med dette gjorde det udviklere i stand til at skrive den dynamiske SQL gennem "DBMS_SQL"-pakken.

Men gradvist begyndte DBMS_SQL-biblioteket at miste sin charme. På grund af dens "Not So Easy"-syntakser, "Sluggish Performance" og "Unsupported User-Defined Types". Alle disse mangler rejste behovet for noget andet. Hvilket kunne hjælpe udviklerne med at skrive en veloptimeret kode uden at lægge overdrevent stress på deres sind.

Oracle tog sin tid, næsten fem år. Endelig udgav den en forbedret version af Dynamic SQL med lanceringen af ​​Oracle Database 8i eller for at være præcis Oracle Database version 8.1.5 i februar 1999. På grund af sin stabile karakter blev denne forbedrede version af Dynamic SQL den oprindelige del af PL/ SQL-sprog og fik sit navn "Native Dynamic SQL", hvorigennem det er kendt nu om dage. Det er en kort introduktion af tilblivelsen af ​​den oprindelige dynamiske SQL i Oracle Database.

For at forstå den oprindelige dynamiske SQL skal vi først forstå, hvad der er statisk SQL i Oracle Database?

Hvad er statisk SQL?

Som navnet antyder, kaldes enhver SQL-sætning, der ikke ændres under kørsel, en statisk SQL-sætning.

Fordelen ved statiske SQL-sætninger er, at vi allerede ved, om alle de afhængige objekter, som vi skriver sætningen over, er til stede eller ej. En anden fordel ved statiske SQL-sætninger er, at vi hardkoder dem ind i vores applikation. Således kan vi tune dem til optimal ydeevne.

Nu hvor vi har lært, hvad statisk SQL er, lad os se, hvad der er dynamisk SQL?

Hvad er Native Dynamic SQL?

Igen, som navnet antyder, kaldes enhver SQL-sætning, der er konstrueret under kørslen, dynamisk SQL . Disse udsagn er bygget på flueben. Derfor kan de ikke hardkodes ind i applikationen. Dette øger igen deres fleksibilitet.

På den ene side lader statisk SQL dig kun udføre DML-sætninger inde i din PL/SQL-blok. På den anden side giver den dynamiske SQL dig mulighed for at udføre DDL-sætninger og det også inde i din PL/SQL-blok. Ved at bruge Dynamic SQL kan du således oprette en tabel eller slippe et indeks eller afkorte din tabel lige inde i din PL/SQL-blok. Dette er en fordel ved Native Dynamic SQL frem for statisk SQL.

Hvad er Native Dynamic PL/SQL?

I lighed med dynamisk SQL kaldes processen med at konstruere PL/SQL-kode ved kørsel for dynamisk PL/SQL.

Lad os nu tage et kig på fordelene ved Native Dynamic SQL over DBMS_SQL-pakken i Oracle Database.

Fordele ved Native Dynamic SQL

  • Nem at bruge koder: I sammenligning med DBMS_SQL-pakken er den oprindelige dynamiske SQL meget nem at bruge. Dette skyldes hovedsageligt, at det er inkorporeret i selve SQL'en. Det svarer til at bruge statisk SQL i en PL/SQL-kode. Også indbygget dynamisk SQL-kode er mere kompakt og læsbar end DBMS_SQL-pakken. Sidstnævnte kræver store mængder koder på grund af strenge sekventielle procedurer. Det gør det mere komplekst.
  • Forbedring af kodens ydeevne: Der er indbygget understøttelse af native dynamisk SQL i PL/SQL-fortolkeren. Derfor er de programmer, der bruger det, mere effektive end dem, der bruger DBMS_SQL-pakken. Grundlæggende kombinerer native dynamisk SQL de trin, der involverer forberedelse, binding og eksekvering i én operation. Dette reducerer overhead for procedureopkald og datakopiering, hvilket igen forbedrer ydeevnen.
  • Support til brugerdefinerede typer: I modsætning til DBMS_SQL-pakken understøtter den oprindelige dynamiske SQL alle slags brugerdefinerede typer. For eksempel brugerdefinerede objekter, REF'er og samlinger.
  • Support til hentning i poster: De rækker, der er resultatet af en forespørgsel, kan hentes direkte ind i PL/SQL-poster ved hjælp af indbygget dynamisk SQL. Dette er ikke muligt med DBMS_SQL-pakken.

Hvad er funktionaliteterne af Dynamic SQL i Oracle Database?

  1. For det første dynamisk DDL og DML med brug af en hvilken som helst bindevariabel.
  2. For det andet Dynamic DQL og
  3. For det tredje, dynamisk DML, der bruger en kendt liste over bindevariabler

Dette er de tre funktioner, som Dynamic SQL tilføjer til din PL/SQL-programmering.

Så hvordan bruger vi dynamisk SQL i Oracle Database?

De to mest almindelige metoder til at bruge dynamisk SQL og PL/SQL i Oracle Database er:

  1. Udfør øjeblikkelig erklæring og
  2. Åbn-for, hent og luk-blok.

Execute Immediate-sætning bruges, når forespørgslen returnerer enkeltrækkedata. Hvis forespørgslen returnerer data med flere rækker, kan du bruge Open-For, Fetch og close-blok. Vi vil lære om Udfør øjeblikkelig og Åbn for, hent og luk blok i detaljer i de kommende selvstudier.

Er der andre måder at bruge Dynamic SQL i Oracle Database?

Bortset fra ovennævnte mest almindeligt anvendte metoder, er de andre måder at bruge dynamisk SQL eller PL/SQL på

  • Med massehentning
  • For det andet med Bulk Execute Immediate
  • Sammen med Bulk FORALL og
  • Sidst med Bulk Collect Into-erklæring

Vi har lært alle ovenstående kommandoer og udsagn i den tidligere serie om massedatabehandling.

Hvis du kan lide at lære gennem video selvstudie, så gå videre, tjek det ud.

Det er en detaljeret introduktion til Native Dynamic SQL i Oracle Database. Håber du nød at læse. Sørg for at Del linket til denne blog med dine venner på dine sociale medier. Sørg også for at abonnere på YouTube-kanalen for at følge denne serie og lære noget nyt og interessant.

Tak og god dag!


  1. Sådan aktiverer du RPC Out ved hjælp af T-SQL

  2. Beregn antallet af samtidige hændelser i SQL

  3. PostgreSQL DATEADD() Tilsvarende

  4. PREVIEW:SentryOne Plan Explorer-udvidelse til Azure Data Studio