Odpowiedź brzmi:PL/SQL nie obsługuje dynamicznego polimorfizmu. obsługuje tylko statyczny polimorfizm, ponieważ
Wszystkie PL/SQL generują "DIANA" -> Opisowa notacja z atrybutami pośrednimi dla Ada , pośredniego języka o strukturze drzewa. DIANA jest używana wewnętrznie przez kompilatory.
W czasie kompilacji kod źródłowy PL/SQL jest tłumaczony na kod systemowy i generuje odpowiednią DIANA. Teraz pomyśl, że gdyby istniała instrukcja DDL, taka jak instrukcja tworzenia tabeli, która w czasie kompilacji nie istnieje, zostanie utworzona po uruchomieniu programu. jak wtedy twój silnik PL/SQL wygeneruje DIANA???
DIANA odgrywa ważną rolę w PL/SQL do sprawdzania/walidowania tego podprogramu. jest to wymagane, ponieważ wiemy, że podprogram może korzystać z obiektów bazy danych, takich jak tabele, widoki, synonimy lub inne przechowywane procedury. możliwe, że obiekty mogły zostać zmienione/usunięte/upuszczone przy następnym uruchomieniu programu. Na przykład:ktoś mógł upuścić tabelę, przechowywany proces lub sygnatura funkcji mogła ulec zmianie.
Dlatego generalnie PL/SQL jest używany do manipulowania danymi w strukturze bazy danych, ale nie do manipulowania tymi strukturami.
ale istnieją sposoby na manipulowanie przy użyciu dynamicznego SQL i pakietu DBMS_SQL, ale te metody znów powinny być używane ostrożnie. Na przykład, jeśli tworzysz tabelę, powinieneś najpierw sprawdzić, czy ta tabela już istnieje, czy nie używasz widoków słownika danych.