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

Retornando uma 'tabela' (sem nomes de coluna pré-definidos) de uma função PL/SQL


Eu fortemente suspeitar que você não quer fazer isso. Criar tipos de objetos dinamicamente e construir esse tipo de flexibilidade em PL/SQL é quase sempre uma receita para a ruína. Você acabará escrevendo SQL dinâmico extremamente complicado em todos os lugares (tanto nos chamadores quanto em suas funções), o que tornará seu código muito, muito mais difícil de ler e depurar. Quando seu código fica tão complexo, é melhor escrever estruturas que gerem o código, mas isso deixa você com o problema muito, muito mais difícil de escrever código que gere código que resolva seu problema, em vez de apenas escrever código que resolva seu problema.

Dito isso, se você estiver realmente determinado, é possível construir um função de tabela pipeline completamente genérica . Isso envolve uma magia profunda usando a estrutura do Oracle Data Cartridge. É muito legal. Mas o número de pessoas que poderiam apoiar e estender realisticamente esse tipo de código é muito pequeno.

Com um pouco menos de magia (mas ainda muito, muito mais do que eu sugeriria para praticamente qualquer organização), você pode construir um função de tabela de pipeline flexível que depende do retorno de tipos de uma hierarquia de tipos pré-definida. É mais provável que seja suportável, mas pressupõe que você possa construir sua hierarquia de tipos antecipadamente.