Oracle
 sql >> база данни >  >> RDS >> Oracle

Защо статичният ddl не е разрешен в PL/SQL?

Отговорът е, че PL/SQL не поддържа динамичен полиморфизъм. той поддържа само статичен полиморфизъм, защото

Всички PL/SQL генерират "DIANA" -> Описателна междинна атрибутирана нотация за Ada, дърво-структуриран междинен език. DIANA се използва вътрешно от компилаторите.

По време на компилиране изходният код на PL/SQL се превежда в системния код и генерира съответния DIANA. Сега помислете, че ако имаше DDL израз като израз за създаване на таблица, който по време на компилиране не съществува, той ще бъде създаден след стартиране на програмата. как ще генерира вашата PL/SQL машина тогава ????

DIANA играе важна роля в PL/SQL, за да провери/потвърди, че подпрограмата. това е необходимо, защото, както знаем, една подпрограма може да използва обекти на база данни като таблици, изгледи, синоними или други съхранени процеси. възможно е обектите да са променени/премахнати/изпуснати, когато следващия път стартирате програмата. Например:някой може да е изпуснал таблицата, може да се е променила съхранената процедура или функция.

Ето защо обикновено PL/SQL се използва за манипулиране на данните в структурата на базата данни, но не и за манипулиране на тези структури.

но има начини за манипулиране с помощта на динамичен SQL и DBMS_SQL пакет, но методологията на тези тези отново трябва да се използва предпазливо. Например, ако създавате таблица, първо трябва да проверите дали тази таблица вече съществува или не използва изгледи на речник с данни.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. SQL заявка за свиване на дублиращи се стойности по период от време

  2. Показване на имена на всички ограничения за таблица в Oracle SQL

  3. Разлика между литералите N'String' и U'String в Oracle

  4. няма ocijdbc9 в java.library.path

  5. Премахване на водещи нули от varchar sql developer