sql >> Databasteknik >  >> RDS >> Oracle

Varför är statisk ddl inte tillåtet i PL/SQL?

Svaret är att PL/SQL inte stöder dynamisk polymorfism. den stöder bara statisk polymorfism eftersom

Alla PL/SQL genererar en "DIANA" -> Descriptive Intermediate Attributed Notation för Ada , ett trädstrukturerat mellanspråk. DIANA används internt av kompilatorer.

Vid kompilering översätts PL/SQL-källkod till systemkod och genererar motsvarande DIANA. Tänk nu att om det fanns en DDL-sats som create table-sats som vid kompileringstillfället inte existerar kommer den att skapas efter att programmet körts. hur skulle din PL/SQL-motor generera en DIANA då ????

DIANA spelar en viktig roll i PL/SQL för att kontrollera/validera att underprogrammet. detta krävs eftersom som vi vet att ett underprogram kan använda databasobjekt såsom tabeller, vyer, synonymer eller andra lagrade processer. det kan vara möjligt att objekten kan ha ändrats/borttagits/tappats nästa gång du kör programmet. Till exempel:någon kan ha tappat tabellen, den lagrade proc- eller funktionssingnaturen kan ha ändrats.

Det är därför som vanligtvis PL/SQL används för att manipulera data i databasstrukturen, men inte för att manipulera dessa strukturer.

men det finns sätt att manipulera med dynamisk SQL och DBMS_SQL-paket men dessa metoder bör återigen användas med försiktighet. Om du till exempel skapar en tabell bör du först kontrollera om den här tabellen redan finns eller inte använder datalexikonvyer.



  1. Hitta värden som inte innehåller siffror i MySQL

  2. postgres kolumn alias problem

  3. ORACLE - Välj Count on a Subquery

  4. Uppgradera MySQL till MariaDB 10 (Del 1 – Installera MariaDB 5.5)