Odpowiedź jest PL/SQL nie obsługuje polimorfizm dynamiczny. wspiera tylko statyczny polimorfizm, ponieważ wszystkie PL/SQL generują "DIANA" -> opisowy pośredni przypisany atrybut dla Ada, pośredniego języka o strukturze drzewiastej. DIANA jest używana wewnętrznie przez kompilatory.
W czasie kompilacji kod źródłowy PL/SQL jest tłumaczony na kod systemowy i generowany jest odpowiedni DIANA. Teraz pomyśl, czy istnieje instrukcja DDL, taka jak tworzenie instrukcji tabeli, która w czasie kompilacji nie istnieje, zostanie utworzona po uruchomieniu programu. W jaki sposób twój silnik PL/SQL wygeneruje DIANę?
DIANA odgrywa ważną rolę w PL/SQL, aby sprawdzić/sprawdzić poprawność programu podrzędnego. jest to wymagane, ponieważ wiemy, że podprogram może wykorzystywać obiekty bazy danych, takie jak tabele, widoki, synonimy lub inne przechowywane procesy. może być możliwe, że obiekty mogły się zmienić/usunąć/upuścić, gdy następnym razem uruchomisz program. Na przykład: ktoś mógł upuścić tabelę, przechowywany proc lub funkcja mogła ulec zmianie.
To dlatego ogólnie PL/SQL jest używane do manipulowania danymi w strukturze bazy danych, ale nie do manipulowania tymi strukturami.
ale istnieją sposoby manipulowania przy użyciu dynamicznego pakietu SQL i DBMS_SQL, ale te metody methodlogy są ponownie powinny być używane ostrożnie. Na przykład, jeśli tworzysz tabelę, powinieneś najpierw sprawdzić, czy ta tabela już istnieje, czy nie używa widoków słownika danych.
Bez odniesienia do myślenia zespołu projektującego PL/SQL, nie sądzę, możemy ** wiedzieć ** dlaczego PL/SQL nie pozwala na statyczne DDL. Możemy tylko omówić plusy i minusy podejścia i nie będzie odpowiedzi, która jest ** odpowiedzią. –
Myślę, że odpowiedzi udzielone do tej pory dowodzą, że to pytanie jest odpowiedzialne, poparte faktami - i prawdopodobnie również konstruktywne. –
Jeffrey Kemp ma rację, zatwierdzona odpowiedź pokazuje, że to pytanie nie powinno zostać zamknięte - tak jak wielu innych na stronie, niestety. –