Vad är dynamisk SQL?

dynamisk SQL är en programmeringsmetod för att generera och köra uttalanden vid körning. Det används främst för att skriva de generella och flexibla programmen där SQL-satserna skapas och exekveras vid körning baserat på kravet.,

i den här handledningen kommer du att lära dig-

  • sätt att skriva dynamisk SQL
  • nds (Native Dynamic SQL) – Utför omedelbar
  • DBMS_SQL för dynamisk SQL

sätt att skriva dynamisk SQL

PL/SQL ger två sätt att skriva dynamisk SQL

  1. nds – Native Dynamic SQL
  2. DBMS_SQL

nds (native Dynamic SQL) – kör omedelbar

native dynamic SQL är det enklare sättet att skriva dynamisk SQL. Den använder kommandot ”kör omedelbart” för att skapa och köra SQL vid körning., Men för att använda detta sätt måste datatypen och antalet variabler som ska användas vid en körning vara kända tidigare. Det ger också bättre prestanda och mindre komplexitet när man jämför med DBMS_SQL.

Syntax

EXECUTE IMMEDIATE(<SQL>)
  • ovanstående syntax visar kör omedelbart kommando.
  • klausul i är valfritt och används endast om den dynamiska SQL innehåller en select-sats som hämtar värden. Variabeltypen ska matcha med variabeltypen för select-satsen.,
  • Klausul användning är valfritt och används endast om den dynamiska SQL innehåller någon bind variabel.

exempel 1: i det här exemplet ska vi hämta data från emp-tabellen för emp_no ’1001’ med nds-uttalande.

utgång

Employee Name : XXX Employee Number: 1001 Salary: 15000 Manager ED: 1000

kod förklaring:

DBMS_SQL för dynamisk SQL

PL/SQL tillhandahålla DBMS_SQL-paketet som låter dig arbeta med dynamisk SQL. Processen att skapa och köra den dynamiska SQL innehåller följande process.,

  • öppna markör: den dynamiska SQL körs på samma sätt som en markör. Så för att kunna utföra SQL-satsen måste vi öppna markören.
  • PARSE SQL: nästa steg är att tolka den dynamiska SQL. Denna process kommer bara att kontrollera syntaxen och hålla frågan redo att köra.
  • binda variabelvärden: nästa steg är att tilldela värden för bind-variabler om sådana finns.
  • definiera kolumn: nästa steg är att definiera kolumnen med deras relativa positioner i Select-satsen.
  • EXECUTE: nästa steg är att utföra den tolkade frågan.,
  • hämta värden: nästa steg är att hämta de exekverade värdena.
  • stäng markören: när resultaten har hämtats ska markören stängas.

exempel 1: i det här exemplet ska vi hämta data från emp-tabellen för emp_no ’1001’ med DBMS_SQL-satsen.

utgång

Employee Name:XXX Employee Number:1001 Salary:15000 Manager ID:1000

Employee Name:XXX Employee Number:1001 Salary:15000 Manager ID:1000

kod förklaring:

  • kodlinje 1-9: variabel deklaration.,
  • kodlinje 10: utforma SQL-satsen.
  • kodlinje 11: öppna markören med DBMS_SQL.OPEN_CURSOR. Det kommer att returnera markör-id som öppnas.
  • kodlinje 12: när markören har öppnats tolkas SQL.
  • kodlinje 13: Bind variabel ’1001’ tilldelar markör-id istället ’:empno’.
  • kodlinje 14-17: definiera kolumnnamnet baserat på deras relativa position i SQL-satsen. I vårt fall är den relativa positionen (1) emp_name, (2) emp_no (3) lön (4) chef. Så baserat på denna position definierar vi målvariabeln.,
  • kodlinje 18: exekvera frågan med DBMS_SQL.KÖRA. Den returnerar antalet behandlade poster.
  • kodlinje 19-33: hämta posterna med en slinga och visa samma.
  • kodlinje 20: DBMS_SQL.FETCH_ROWS hämtar en post från de behandlade raderna. Det kan kallas upprepade gånger för att hämta alla rader. Om den inte kan hämta rader kommer den att returnera 0, vilket lämnar slingan.

sammanfattning

i det här avsnittet har vi diskuterat dynamisk SQL och hur man utför dynamisk SQL., Vi har också sett de olika stegen i att utföra den dynamiska SQL på båda sätten. Vi har också sett exemplen där samma scenario hanteras i både NDS och DBMS_SQL sätt att utföra körning vid körning.

Lämna ett svar

Din e-postadress kommer inte publiceras. Obligatoriska fält är märkta *