Hvad er Dynamisk SQL?
dynamisk s .l er en programmeringsmetode til generering og kørsel af udsagn ved køretid. Det bruges hovedsageligt til at skrive de generelle formål og fleksible programmer, hvor S .l-sætningerne oprettes og udføres ved køretid baseret på kravet.,
I denne tutorial vil du lære, –
- Måder at skrive dynamisk SQL
- NDS (Native Dynamisk SQL) – Udføre Øjeblikkelig
- DBMS_SQL for Dynamisk SQL
Måder at skrive dynamisk SQL
PL/SQL giver dig to måder at skrive dynamisk SQL
- NDS – Native Dynamisk SQL
- DBMS_SQL
NDS (Native Dynamisk SQL) – Udføre Øjeblikkelig
Native Dynamisk SQL er det nemmere måde at skrive dynamisk SQL. Det bruger ‘UDFØRE ØJEBLIKKELIG’ – kommandoen til at oprette og udføre SQL-på run-time., Men for at bruge denne måde skal datatypen og antallet af variable, der skal bruges på en køretid, være kendt før. Det giver også bedre ydeevne og mindre kompleksitet, når man sammenligner med DBMS_S .l.
Syntaks
EXECUTE IMMEDIATE(<SQL>)
- ovenstående syntaks viser UDFØRE ØJEBLIKKELIG kommando.
- klausul i er valgfri og bruges kun, hvis den dynamiske s .l indeholder en select-sætning, der henter værdier. Variabeltypen skal svare til variabeltypen for select-sætningen.,
- Klausul brug er valgfri og bruges kun, hvis den dynamiske s .l indeholder en bindingsvariabel. eksempel 1: i dette eksempel henter vi dataene fra emp-tabellen for emp_no ‘1001’ ved hjælp af NDS-erklæring.
Output
Employee Name : XXX Employee Number: 1001 Salary: 15000 Manager ED: 1000
Kode Forklaring:
DBMS_SQL for Dynamisk SQL
PL/SQL give DBMS_SQL pakke, der giver dig mulighed for at arbejde med dynamisk SQL. Processen med at oprette og udføre den dynamiske s .l indeholder følgende proces.,
- åben markør: den dynamiske s .l udføres på samme måde som en markør. Så for at udføre s .l-sætningen skal vi åbne markøren.
- PARSE s .l: det næste trin er at analysere den dynamiske s .l. Denne proces vil bare kontrollere syntaksen og holde forespørgslen klar til at udføre.
- BIND VARIABLE værdier: det næste trin er at tildele værdierne for bind variabler, hvis nogen.
- Definer kolonne: det næste trin er at definere kolonnen ved hjælp af deres relative positioner i select-sætningen.
- udfør: det næste trin er at udføre den analyserede forespørgsel.,
- Hent værdier: det næste trin er at hente de udførte værdier.
- luk markør: når resultaterne er hentet, skal markøren lukkes.eksempel 1: i dette eksempel henter vi dataene fra emp-tabellen for emp_no ‘1001’ ved hjælp af dbms_s .l-erklæring.
Output
Employee Name:XXX Employee Number:1001 Salary:15000 Manager ID:1000
Kode Forklaring:
- Kode linje 1-9: Variabel-erklæring.,
- kode linje 10: indramning af S .l-sætningen.
- kodelinje 11: åbning af markøren ved hjælp af DBMS_S .l.OPEN_CURSOR. Det vil returnere markøren id, som åbnes.
- kodelinje 12: når markøren er åbnet, analyseres s .l.
- kode linje 13:Bind variabel ‘1001’ tildeler markøren id i stedet’: empno’.
- kodelinje 14-17: definition af kolonnenavnet baseret på deres relative position i S .l-sætningen. I vores tilfælde er den relative position (1) emp_name, (2) emp_no (3) løn (4) manager. Så baseret på denne position definerer vi målvariablen.,
- kodelinje 18: udfører forespørgslen ved hjælp af DBMS_S .l.UDFØRE. Det Returnerer antallet af behandlede poster.
- kodelinje 19-33: henter posterne ved hjælp af en løkke og viser det samme.
- kode linje 20: DBMS_S .l.FETCH_RO .s henter en post fra de behandlede rækker. Det kan kaldes gentagne gange for at hente alle rækkerne. Hvis det ikke kan hente rækker, vil det returnere 0, således afslutter løkken.
resum.
i dette afsnit har vi diskuteret dynamisk s .l og måderne til at udføre dynamisk s .l på., Vi har også set de forskellige trin i udførelsen af den dynamiske s .l på begge måder. Vi har også set de eksempler, hvor det samme scenario håndteres i både NDS og DBMS_S .l måder at udføre udførelse på run-time.