Co je Dynamické SQL?
Dynamic SQL je programovací metodika pro generování a spouštění příkazů za běhu. Používá se hlavně k zápisu univerzálních a flexibilních programů, kde budou příkazy SQL vytvořeny a provedeny za běhu na základě požadavku.,
V tomto kurzu, budete-
- Způsoby, jak psát dynamické SQL
- NDS (Nativní Dynamické SQL) – Provádět Okamžité
- DBMS_SQL pro Dynamické SQL
Způsoby, jak psát dynamické SQL
PL/SQL poskytuje dva způsoby, jak psát dynamické SQL
- NDS – Nativní Dynamické SQL
- DBMS_SQL
NDS (Nativní Dynamické SQL) – Provádět Okamžité
Nativní Dynamické SQL je jednodušší způsob, jak psát dynamické SQL. Používá příkaz „EXECUTE IMMEDIATE“ k vytvoření a spuštění SQL za běhu., Chcete-li však použít tento způsob, musí být datový typ a počet proměnných, které mají být použity v době běhu, známy dříve. To také dává lepší výkon a menší složitost ve srovnání s DBMS_SQL.
Syntax
EXECUTE IMMEDIATE(<SQL>)
- výše uvedená syntaxe ukazuje provést okamžitý příkaz.
- klauzule do je volitelná a používá se pouze v případě, že dynamický SQL obsahuje příkaz select, který načte hodnoty. Typ proměnné by měl odpovídat typu proměnné příkazu select., použití klauzule
- je volitelné a používá se pouze v případě, že dynamický SQL obsahuje libovolnou proměnnou bind.
Příklad 1: V tomto příkladu budeme načítat data z tabulky emp pro emp_no ‚1001‘ pomocí NDS prohlášení.
Výstupní
Employee Name : XXX Employee Number: 1001 Salary: 15000 Manager ED: 1000
Kód Vysvětlení:
DBMS_SQL pro Dynamické SQL
PL/SQL poskytnout DBMS_SQL balíček, který umožňuje pracovat s dynamickým SQL. Proces vytváření a provádění dynamického SQL obsahuje následující proces.,
- otevřít kurzor: dynamický SQL se provede stejným způsobem jako kurzor. Abychom mohli provést příkaz SQL, musíme otevřít kurzor.
- analyzovat SQL: dalším krokem je analyzovat dynamický SQL. Tento proces pouze zkontroluje syntaxi a ponechá dotaz připravený k provedení.
- BIND VARIABLE Values: dalším krokem je přiřazení hodnot pro bind proměnné, pokud existují.
- definovat sloupec: dalším krokem je definovat sloupec pomocí jejich relativních pozic v příkazu select.
- EXECUTE: dalším krokem je provedení analyzovaného dotazu.,
- načíst hodnoty: dalším krokem je načtení provedených hodnot.
- zavřít kurzor: jakmile jsou výsledky načteny, kurzor by měl být uzavřen.
Příklad 1: V tomto příkladu budeme načítat data z tabulky emp pro emp_no ‚1001‘ pomocí DBMS_SQL prohlášení.
Výstupní
Employee Name:XXX Employee Number:1001 Salary:15000 Manager ID:1000
Kód Vysvětlení:
- řádek Kódu 1-9: deklarace Proměnných.,
- kódový řádek 10: rámování příkazu SQL.
- kódový řádek 11: otevření kurzoru pomocí DBMS_SQL.OPEN_CURSOR. Vrátí id kurzoru, které se otevře.
- kódový řádek 12: po otevření kurzoru se analyzuje SQL.
- kódový řádek 13: Bind proměnná ‚ 1001 ‚přiřazuje k id kurzoru místo‘: empno‘.
- kódový řádek 14-17: definování názvu sloupce na základě jejich relativní polohy v příkazu SQL. V našem případě je relativní pozice (1) emp_name, (2) emp_no (3) plat (4) manažer. Takže na základě této pozice definujeme cílovou proměnnou.,
- kódový řádek 18: provedení dotazu pomocí DBMS_SQL.SPUSTIT. Vrací počet zpracovaných záznamů.
- kódový řádek 19-33: načítání záznamů pomocí smyčky a zobrazení stejné.
- kódový řádek 20: DBMS_SQL.FETCH_ROWS načte jeden záznam ze zpracovaných řádků. To může být voláno opakovaně načíst všechny řádky. Pokud nemůže načíst řádky, vrátí se 0, čímž opustí smyčku.
shrnutí
v této části jsme diskutovali o dynamickém SQL a způsobech provádění dynamického SQL., Viděli jsme také různé kroky při provádění dynamického SQL oběma způsoby. Viděli jsme také příklady, ve kterých je stejný scénář zpracován jak v NDS, tak v DBMS_SQL způsobech provedení za běhu.