Hva er Dynamisk SQL?
Dynamisk SQL er en programmerer metodikk for å generere og kjører uttalelser på kjøre-time. Det er i hovedsak brukt til å skrive generell og fleksibel programmer der SQL uttalelser vil bli opprettet og henrettet ved run-time basert på kravene.,
I denne opplæringen vil du lære-
- Måter å skrive dynamisk SQL
- NDS-køer (Native Dynamisk SQL) – Utføre Umiddelbare
- DBMS_SQL for Dynamisk SQL
Måter å skrive dynamisk SQL
PL/SQL gir deg to måter å skrive dynamisk SQL –
- NDS – Native Dynamisk SQL
- DBMS_SQL
NDS-køer (Native Dynamisk SQL) – Utføre Umiddelbare
Native Dynamisk SQL er en enklere måte å skrive dynamisk SQL. Den bruker ‘UTFØR UMIDDELBAR’ – kommandoen til å opprette og kjøre SQL-på kjøre-time., Men å bruke denne måten, datatype og antall variable som skal brukes på en kjøre trenger tid til å bli kjent før. Det gir også bedre ytelse og mindre kompleksitet når du sammenligner DBMS_SQL.
Syntaks
EXECUTE IMMEDIATE(<SQL>)
- De ovennevnte syntaks viser UTFØRE UMIDDELBARE kommando.
- Klausulen INN er valgfritt, og brukes kun hvis dynamisk SQL inneholder en select-setning som henter verdier. Variabelen type bør samsvare med den variable type select-setning.,
- Klausulen BRUKER er valgfritt, og brukes kun hvis dynamisk SQL inneholder noe binde variabel.
Eksempel 1: I dette eksemplet, vi kommer til å hente data fra emp tabell for emp_no ‘1001″ ved hjelp av NDS-erklæringen.
Output
Employee Name : XXX Employee Number: 1001 Salary: 15000 Manager ED: 1000
Kode Forklaring:
DBMS_SQL for Dynamisk SQL
PL/SQL gi DBMS_SQL pakke som gjør det mulig for deg å arbeide med dynamisk SQL. Prosessen med å opprette og kjøre dynamisk SQL inneholder følgende prosess.,
- ÅPNE MARKØREN: dynamisk SQL utføres på samme måte som en markør. Så for å utføre SQL-setning, må vi åpne markøren.
- PARSE-SQL: Det neste trinnet er å analysere dynamisk SQL. Denne prosessen vil bare sjekke syntaksen og holde spørringen klar til å kjøre.
- BINDE VARIABLE Verdier: Det neste trinnet er å tilordne verdier for bind variabler hvis det er noen.
- DEFINERE KOLONNE: neste steg er å definere kolonnen med sine relative posisjoner i select-setning.
- UTFØRE: Det neste trinnet er å utføre analyseres spørring.,
- HENT VERDIER: Det neste trinnet er å hente utført verdier.
- TETT MARKØREN: Når resultatene er hentet markøren skal være lukket.
Eksempel 1: I dette eksemplet, vi kommer til å hente data fra emp tabell for emp_no ‘1001″ ved hjelp av DBMS_SQL uttalelse.
Output
Employee Name:XXX Employee Number:1001 Salary:15000 Manager ID:1000
Kode Forklaring:
- Kode linje 1-9: Variabel erklæring.,
- Kode linje 10: ramme inn SQL-setningen.
- Kode linje 11: Åpning markøren ved hjelp av DBMS_SQL.OPEN_CURSOR. Det vil returnere markøren id som er åpnet.
- Kode linje 12: Etter markøren er åpnet, SQL er analysert.
- Kode linje 13: Bind variabel ‘1001’ er tilordne til markøren id stedet ‘:empno’.
- Kode linje 14-17: Definere kolonne navn basert på deres relative posisjon i SQL-setningen. I vårt tilfelle, den relative posisjonen er (1) emp_name, (2) emp_no (3) lønn (4) manager. Så basert på denne posisjonen vi er å definere målet variabel.,
- Kode linje 18: Utføre spørring ved hjelp av DBMS_SQL.UTFØRE. Den returnerer antall poster behandles.
- Kode linje 19-33: Henting av poster ved hjelp av en løkke og viser det samme.
- Kode linje 20: DBMS_SQL.FETCH_ROWS vil hente én post fra rader behandlet. Det kan bli kalt gjentatte ganger for å hente alle radene. Hvis det ikke kan hente rader, vil den gå tilbake til 0, og dermed avslutte loopen.
Oppsummering
I denne delen, vi har diskutert dynamisk SQL og måter å utføre DYNAMISK SQL., Vi har også sett på de ulike trinnene i å utføre dynamisk SQL i begge måter. Vi har også sett eksempler der den samme scenario er behandlet i både NDS-køer og DBMS_SQL måter å utføre kjøring ved run-time.