sql >> Databáze >  >> RDS >> Oracle

Proč není v PL/SQL povoleno statické ddl?

Odpověď je, že PL/SQL nepodporuje dynamický polymorfismus. podporuje pouze statický polymorfismus, protože

Všechny PL/SQL generují "DIANA" -> Descriptive Intermediate Attributed Notation pro Ada, stromově strukturovaný střední jazyk. DIANA je interně používána kompilátory.

V době kompilace je zdrojový kód PL/SQL přeložen do systémového kódu a generuje odpovídající DIANA. Nyní si představte, že kdyby existoval příkaz DDL jako příkaz create table, který v době kompilace neexistuje, bude vytvořen po spuštění programu. jak by pak váš PL/SQL engine vygeneroval DIANA ????

DIANA hraje důležitou roli v PL/SQL pro kontrolu/ověření toho, že podprogram. to je vyžadováno, protože jak víme, podprogram může používat databázové objekty, jako jsou tabulky, pohledy, synonyma nebo jiné uložené procesy. je možné, že se objekty při příštím spuštění programu změnily/odstranily/spadly. Například:někdo mohl vypustit tabulku, uložená přirozenost procesu nebo funkce se mohla změnit.

To je důvod, proč se PL/SQL obecně používá k manipulaci s daty ve struktuře databáze, ale ne k manipulaci s těmito strukturami.

ale existují způsoby, jak manipulovat pomocí dynamického SQL a balíčku DBMS_SQL, ale tato metodologie by měla být opět používána opatrně. Pokud například vytváříte tabulku, měli byste nejprve zkontrolovat, zda tato tabulka již existuje nebo zda nepoužíváte zobrazení datového slovníku.



  1. Jak získat všechny hodnoty ve sloupci pomocí PHP?

  2. Archiver pozastaven kvůli KOMPATIBILNÍMU ORA-16484

  3. Jak uložit datum a čas v MySQL s informacemi o časovém pásmu

  4. Vyladění služby SQL Server Reporting Services