sql >> Database >  >> RDS >> Oracle

Waarom is statische ddl niet toegestaan ​​in PL/SQL?

Het antwoord is dat PL/SQL geen dynamisch polymorfisme ondersteunt. het ondersteunt alleen statisch polymorfisme omdat

Alle PL/SQL genereert een "DIANA" -> Beschrijvende Intermediate Attributed Notation voor Ada , een boomgestructureerde tussentaal. DIANA wordt intern gebruikt door compilers.

Tijdens het compileren wordt de PL/SQL-broncode vertaald in systeemcode en genereert de bijbehorende DIANA. Bedenk nu dat als er een DDL-instructie was, zoals een create table-instructie die op het moment van compileren niet bestaat, deze zal worden gemaakt nadat het programma is uitgevoerd. hoe zou uw PL/SQL-engine dan een DIANA genereren ????

De DIANA speelt een belangrijke rol in PL/SQL om het subprogramma te controleren/valideren. dit is vereist omdat, zoals we weten, een subprogramma database-objecten kan gebruiken zoals tabellen, weergaven, synoniemen of andere opgeslagen processen. het kan mogelijk zijn dat de objecten zijn gewijzigd/verwijderd/verwijderd wanneer u het programma de volgende keer uitvoert. Bijvoorbeeld:iemand kan de tafel hebben laten vallen, de opgeslagen procedure of functie kan zijn veranderd.

Daarom wordt PL/SQL over het algemeen gebruikt om de gegevens binnen de databasestructuur te manipuleren, maar niet om die structuren te manipuleren.

maar er zijn manieren om te manipuleren met behulp van dynamisch SQL en DBMS_SQL-pakket, maar deze methode moet opnieuw voorzichtig worden gebruikt. Als u bijvoorbeeld een tabel aan het maken bent, moet u eerst controleren of deze tabel al bestaat of dat u geen datadictionary-weergaven gebruikt.



  1. Wachtgebeurtenissen SQL Server -3

  2. Voorbeeld van Oracle FOR LOOP SELECT-instructie

  3. Verschil tussen SYSDATE() en NOW() in MariaDB

  4. Inleiding tot Python SQL-bibliotheken