Nativní dynamický SQL
Než se pustíte do učení nativního dynamického SQL, je důležité krátké pozadí. Oracle dal v květnu 1994 dárek v polovině léta všem vývojářům tím, že představil koncept Dynamic SQL ve své databázi verze 7.1 (aka Oracle 7.1). To umožnilo vývojářům psát dynamické SQL prostřednictvím balíčku „DBMS_SQL“.
Postupně však knihovna DBMS_SQL začala ztrácet své kouzlo. Kvůli syntaxi „Ne tak snadné“, „Sluggish Performance“ a „Unsupported User-Defined Types“. Všechny tyto nedostatky vyvolaly potřebu něčeho jiného. Což by mohlo vývojářům pomoci při psaní dobře optimalizovaného kódu bez nadměrného stresu na jejich mysl.
Oracle si dal na čas, téměř pět let. Nakonec vydala vylepšenou verzi Dynamic SQL se spuštěním Oracle Database 8i nebo přesněji Oracle Database verze 8.1.5 v únoru 1999. Vzhledem ke své stabilní povaze se tato vylepšená verze Dynamic SQL stala nativní součástí PL/ SQL jazyk a dostal svůj název „Native Dynamic SQL“, díky kterému je dnes znám. To je stručný úvod do geneze nativního dynamického SQL v databázi Oracle.
Abychom porozuměli nativnímu dynamickému SQL, musíme nejprve pochopit, co je statický SQL v databázi Oracle?
Co je statické SQL?
Jak název napovídá, každý příkaz SQL, který se během běhu nemění, se nazývá statický příkaz SQL.
Výhodou statických SQL příkazů je, že již víme, zda jsou přítomny všechny závislé objekty, nad kterými příkaz zapisujeme, či nikoliv. Další výhodou statických SQL příkazů je, že je do naší aplikace zakódujeme napevno. Můžeme je tedy vyladit pro optimální výkon.
Nyní, když jsme se naučili, co je statické SQL, pojďme se podívat, co je dynamické SQL?
Co je nativní dynamický SQL?
Jak již název napovídá, jakýkoli příkaz SQL vytvořený za běhu se nazývá dynamický SQL . Tato prohlášení jsou vytvářena za běhu. Proto je nelze do aplikace napevno zakódovat. To následně zvyšuje jejich flexibilitu.
Na jedné straně vám statický SQL umožňuje provádět pouze příkazy DML uvnitř vašeho bloku PL/SQL. Na druhou stranu vám dynamický SQL umožňuje provádět příkazy DDL a to také uvnitř vašeho PL/SQL bloku. Pomocí dynamického SQL tedy můžete vytvořit tabulku nebo zrušit index nebo zkrátit tabulku přímo v bloku PL/SQL. To je výhoda nativního dynamického SQL oproti statickému SQL.
Co je nativní dynamické PL/SQL?
Podobně jako u dynamického SQL se proces vytváření kódu PL/SQL za běhu nazývá dynamický PL/SQL.
Nyní se podívejme na výhody nativního dynamického SQL oproti balíčku DBMS_SQL v databázi Oracle.
Výhody nativního dynamického SQL
- Snadno použitelné kódy: Ve srovnání s balíčkem DBMS_SQL se nativní dynamické SQL používá mnohem snadno. Je to hlavně proto, že je začleněno do samotného SQL. Je to ekvivalentní použití statického SQL v kódu PL/SQL. Také nativní dynamický kód SQL je kompaktnější a čitelnější než balíček DBMS_SQL. Ten vyžaduje velké množství kódů kvůli přísným sekvenčním postupům. Dělá to složitější.
- Zlepšení výkonu kódu: V interpretu PL/SQL je integrována podpora pro nativní dynamické SQL. Programy, které jej používají, jsou tedy efektivnější než programy využívající balíček DBMS_SQL. V zásadě nativní dynamické SQL kombinuje kroky zahrnující přípravu, vazbu a provedení do jedné operace. To snižuje režii volání procedur a kopírování dat a zlepšuje výkon.
- Podpora pro uživatelem definované typy: Na rozdíl od balíčku DBMS_SQL podporuje nativní dynamické SQL všechny druhy uživatelsky definované typy. Například uživatelem definované objekty, odkazy a kolekce.
- Podpora pro načítání do záznamů: Řádky, které jsou výsledkem dotazu, lze přímo načíst do záznamů PL/SQL pomocí nativního dynamického SQL. To není možné s balíčkem DBMS_SQL.
Jaké jsou funkce dynamického SQL v databázi Oracle?
- Za prvé, Dynamic DDL &DML s použitím libovolné proměnné vazby.
- Za druhé, Dynamic DQL a
- Za třetí, Dynamic DML využívající známý seznam vazebných proměnných
Toto jsou tři funkce, které Dynamic SQL přidává do vašeho programování PL/SQL.
Jak tedy používáme dynamické SQL v databázi Oracle?
Dvě nejběžnější metody použití dynamického SQL a PL/SQL v databázi Oracle jsou:
- Proveďte okamžité prohlášení a
- Otevřít-pro, načíst a zavřít blok.
Příkaz Execute Immediate se používá, když dotaz vrací data o jednom řádku. V případě, že dotaz vrací víceřádková data, můžete využít blokování Open-For, Fetch a close. O Execute Immediate a Open-for, načítání a zavření bloku se podrobně seznámíme v nadcházejících tutoriálech.
Existují nějaké další způsoby použití dynamického SQL v databázi Oracle?
Kromě výše uvedených nejpoužívanějších metod jsou dalšími způsoby použití dynamického SQL nebo PL/SQL
- S hromadným načítáním
- Zadruhé s hromadným spuštěním okamžitě
- Spolu s Bulk FORALL a
- Naposledy s výpisem Hromadné shromáždění
Všechny výše uvedené příkazy a příkazy jsme se naučili v předchozí sérii o hromadném zpracování dat.
Pokud se rádi učíte prostřednictvím výukového videa, pak se na to podívejte.
Toto je podrobný úvod do nativního dynamického SQL v databázi Oracle. Doufám, že se vám čtení líbilo. Nezapomeňte sdílet odkaz na tento blog se svými přáteli na sociálních sítích. Nezapomeňte se také přihlásit k odběru kanálu YouTube, abyste mohli sledovat tuto sérii a dozvědět se něco nového a zajímavého.
Děkuji a přeji hezký den!