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

Uma consulta Oracle SQL pode executar uma consulta de string selecionada de uma tabela?


Geralmente, esse não é um design particularmente bom - armazenar SQL em tabelas e executá-lo dinamicamente apresenta todos os tipos de problemas de segurança e manutenção.

Provavelmente é possível (embora seja muito tarde em uma sexta-feira que começou muito cedo para eu tentar descobrir) fazer uma consulta XML muito legal ao longo das linhas de esta consulta que executa uma contagem(*) em todas as tabelas do esquema que faria isso tudo em uma consulta.

Para a grande maioria dos programadores, porém, a abordagem mais simples seria percorrer as consultas, executá-las uma de cada vez e armazenar os resultados em algum lugar. Potencialmente, a variável local seria adicionada a uma coleção de contagens, por exemplo.
FOR q IN (SELECT sql_text FROM query_table)
LOOP
  EXECUTE IMMEDIATE 'SELECT COUNT(*) FROM (' || q.sql_text || ')'
     INTO some_local_variable;
  <<do something with the local variable>>
END LOOP;

Como você está tentando criar uma exibição, você pode pegar essa lógica e colocá-la em uma função de tabela em pipeline. Você faria um PIPE ROW para retornar dados dentro do loop. Sua visualização pode ser criada em cima da função de tabela em pipeline.