Pergunta sobre o texto do programa armazenado PL/SQL
-
20-09-2019 - |
Pergunta
Eu uso o Toad para fazer meu desenvolvimento PL/SQL. No Toad, quando digito um nome de procedimento e pressiono F4, posso ver o código -fonte deste procedimento. Eu acho que o Toad obtém o código -fonte da visualização v $ sqltext. Para confirmar meu pensamento, escrevi uma consulta:
select * from v$sqltext
Mas quando eu executo a consulta superior, o Oracle me dá um erro:
ORA -00942: Tabela ou exibição não existe 00942. 00000 - "Tabela ou exibição não existe" *Causa:
*Ação: Erro na linha: 29 Coluna: 15
Então, acho que o Toad obtenha a fonte do procedimento de outro lugar em vez da visualização v $ sqltext. Alguém pode me contar sobre isso? Ótimo obrigado.
Solução
A consulta completa para um procedimento armazenado (não em um pacote):
select text
from all_source
where owner = 'MYSCHEMA'
and type = 'PROCEDURE'
and name = 'MY_PROCEDURE'
order by line;
Se você estiver conectado como usuário myschema, você pode usar user_source:
select text
from user_source
where type = 'PROCEDURE'
and name = 'MY_PROCEDURE'
order by line;
Outros valores para o tipo são:
- Tipo de corpo
- FUNÇÃO
- ACIONAR
- MODELO
- Fonte Java
- Corpo da embalagem
- PACOTE
Outras dicas
select * from all_source
Consulte Referência de banco de dados para All_source e V $ sqltext.
Se você tiver selecionado Priv em tabelas DBA*, verifique select * from dba_source
. Esta tabela terá todo o código -fonte.