Oracle
 sql >> Base de Dados >  >> RDS >> Oracle

Por que o ddl estático não é permitido em PL/SQL?


A resposta é PL/SQL não suporta polimorfismo dinâmico. ele só suporta polimorfismo estático porque

Todo PL/SQL gera uma "DIANA" -> Notação Atribuída Intermediária Descritiva para Ada , uma linguagem intermediária estruturada em árvore. DIANA é usado internamente por compiladores.

Em tempo de compilação, o código-fonte PL/SQL é traduzido em código do sistema e gera o DIANA correspondente. Agora pense se houvesse uma instrução DDL como a instrução create table que no momento da compilação não existe, ela será criada após a execução do programa. como seu mecanismo PL/SQL geraria uma DIANA então ????

O DIANA desempenha um papel importante em PL/SQL para verificar/validar esse subprograma. isso é necessário porque sabemos que um subprograma pode usar objetos de banco de dados como Tabelas, Visualizações, Sinônimos ou outros procs armazenados. pode ser possível que os objetos tenham sido alterados/removidos/descartados na próxima vez que você executar o programa. Por exemplo:alguém pode ter descartado a tabela, o proc armazenado ou a natureza da função pode ter mudado.

É por isso que geralmente o PL/SQL é usado para manipular os dados dentro da estrutura do banco de dados, mas não para manipular essas estruturas.

mas existem maneiras de manipular usando SQL dinâmico e pacote DBMS_SQL, mas esta metodologia deve ser usada com cautela. Por exemplo, se você estiver criando uma tabela, verifique primeiro se essa tabela já existe ou não está usando visualizações de dicionário de dados.