mi a dinamikus SQL?

A Dynamic SQL egy programozási módszer a futásidejű utasítások generálására és futtatására. Főleg olyan általános célú és rugalmas programok írására használják, ahol az SQL utasítások a követelmény alapján futási időben kerülnek létrehozásra és végrehajtásra.,

ebben A tutorial, hogy megtanulják, –

  • Módon írja dinamikus SQL
  • NDS (Natív Dinamikus SQL) – Végre Azonnali
  • DBMS_SQL a Dinamikus SQL

Módon írja dinamikus SQL

PL/SQL kétféleképpen írjuk dinamikus SQL

  1. NDS – Natív Dinamikus SQL
  2. DBMS_SQL

NDS (Natív Dinamikus SQL) – Végre Azonnali

Natív Dinamikus SQL ez a könnyebb út írni dinamikus SQL. Az “EXECUTE azonnali” parancs segítségével hozza létre és hajtja végre az SQL-t futási időben., De ahhoz, hogy ezt a módszert használhassuk, a futási időben használandó változó adattípusát és számát már korábban ismernünk kell. Ez is ad jobb teljesítményt, kevésbé bonyolult, ha összehasonlítja a DBMS_SQL.

szintaxis

EXECUTE IMMEDIATE(<SQL>)
  • a fenti szintaxis azonnali parancsot mutat. a
  • záradék megadása nem kötelező, csak akkor használható, ha a dinamikus SQL tartalmaz egy select utasítást, amely értékeket lekér. A változó típusának meg kell egyeznie a select utasítás változó típusával., a
  • záradék használata nem kötelező, csak akkor használható, ha a dinamikus SQL tartalmaz bind változót.

1. példa: ebben a példában az EMP tábla adatait az emp_no ‘1001’ – hez fogjuk letölteni az NDS utasítás használatával.

kimenet

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

Kód magyarázata:

DBMS_SQL dinamikus SQL

PL / SQL megadja a dbms_sql csomagot, amely lehetővé teszi meg kell dolgozni dinamikus SQL. A dinamikus SQL létrehozásának és végrehajtásának folyamata a következő folyamatot tartalmazza.,

  • kurzor megnyitása: a dinamikus SQL ugyanúgy fog végrehajtani, mint a kurzor. Tehát az SQL utasítás végrehajtásához meg kell nyitnunk a kurzort.
  • SQL elemzése: a következő lépés a dinamikus SQL elemzése. Ez a folyamat csak ellenőrzi a szintaxist, majd a lekérdezés készen áll a végrehajtásra.
  • változó értékek kötése: a következő lépés a bind változók értékeinek hozzárendelése, ha vannak ilyenek.
  • oszlop meghatározása: a következő lépés az oszlop meghatározása a select utasítás relatív pozícióinak felhasználásával.
  • EXECUTE: a következő lépés az elemzett lekérdezés végrehajtása.,
  • értékek lekérése: a következő lépés a végrehajtott értékek lekérése.
  • kurzor bezárása: Az eredmények lekérése után a kurzort le kell zárni.

1. példa: ebben a példában az EMP tábla adatait az emp_no ‘1001’ – hez fogjuk letölteni a DBMS_SQL utasítás használatával.

kimenet

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

kód magyarázata:

  • kódsor 1-9: változó nyilatkozat.,
  • kódsor 10: Az SQL utasítás keretezése.
  • kódsor 11: A kurzor megnyitása DBMS_SQL segítségével.OPEN_CURSOR. Visszaadja a megnyitott kurzor azonosítót.
  • kódsor 12: A kurzor megnyitása után az SQL elemezve van.
  • 13-as kódsor:az “1001” változó a kurzorazonosítóhoz rendeli a”: empno ” helyett.
  • kódsor 14-17: az oszlop nevének meghatározása az SQL utasítás relatív pozíciója alapján. Esetünkben a relatív pozíció (1) emp_name, (2) emp_no (3) fizetés (4) menedzser. Tehát ezen pozíció alapján meghatározzuk a célváltozót.,
  • kódsor 18: a lekérdezés végrehajtása DBMS_SQL segítségével.Kivégzés. Visszaadja a feldolgozott rekordok számát.
  • kódsor 19-33: a rekordok lekérése egy hurok segítségével, amely ugyanazt jeleníti meg.
  • kódsor 20: DBMS_SQL.A FETCH_ROWS egy rekordot fog letölteni a feldolgozott sorokból. Meg lehet hívni többször letölteni az összes sort. Ha nem tudja letölteni a sorokat, akkor 0-ra tér vissza, így kilép a hurokból.

összefoglaló

ebben a szakaszban a dinamikus SQL-t és a dinamikus SQL-t futtathatjuk., Azt is láttuk, hogy a dinamikus SQL mindkét módon végrehajtja a különböző lépéseket. Láttuk azokat a példákat is, amelyekben ugyanazt a forgatókönyvet kezelik mind az NDS, mind a DBMS_SQL módon, hogy futási időben végrehajtsák a végrehajtást.

Vélemény, hozzászólás?

Az email címet nem tesszük közzé. A kötelező mezőket * karakterrel jelöltük