Pular para o conteúdo
  • Este tópico contém 3 respostas, 3 vozes e foi atualizado pela última vez 10 anos, 1 mês atrás por Avatar de Fábio PradoFábio Prado.
Visualizando 4 posts - 1 até 4 (de 4 do total)
  • Autor
    Posts
  • #106755
    Avatar de Eliane Moreira dos SantosEliane Moreira dos Santos
    Participante

      Colegas, boa tarde,

      tenho a seguinte situação no ORACLE, e preciso de ajuda:

      Precisei verificar uma procedure que está dando erro no sistema, mas dentro do código fonte do aplicativo ela não é chamada.

      Constatei que ela é chamada dentro de uma outra procedure. Mas agora, preciso analisar um número maior de procedures, tem como fazer um select que eu consulte quais procedures são chamadas dentro de outras procedures? Pois como eu disse, algumas procedures não são chamadas no código fonte, e não consigo identificar qual procedure chama a outra.

      #106756
      Avatar de Eliane Moreira dos SantosEliane Moreira dos Santos
      Participante

        Consegui, caso alguém tenha a mesma dúvida, no sql developer eu fiz a seguinte consulta, ao executar aparece a tela para colocarmos o nome da procedure que queremos consultar onde ela é chamada. (No meu caso, aqui no serviço só roda no ambiente de desenvolvimento por questão de permissões). Segue o select:

        select owner “Owner”,
        name “PL/SQL Object Name”,
        type “Type”,
        line “Line”,
        text “Text”,
        owner sdev_link_owner,
        name sdev_link_name,
        type sdev_link_type,
        line sdev_link_line
        from sys.all_source
        where owner = user
        and (instr(upper(text),upper(:TEXT_STRING)) > 0)
        and name not like ‘BIN$%’
        order by owner, name, type, line

        #106757
        Avatar de rmanrman
        Participante

          @Eliane Moreira dos Santos

          Outra forma seria fazer um debug STEP BY STEP começando pela PROCEDURE inicial.

          #106761
          Avatar de Fábio PradoFábio Prado
          Participante

            Eliane,

            Execute o SQL abaixo informando os devidos valores para as variáveis de substituição SCHEMA_NAME e OBJECT_NAME. Ele irá te trazer uma lista completa de objetos que são referenciados dentro de outro objeto. Você pode utilizá-lo para descobrir tudo o que é referenciado dentro de uma stored procedure. Se precisar de algo mais conciso, como por exemplo filtrar somente procedures que são referenciadas dentro do objeto inicialmente especificado, faça um filtro na coluna referenced_type.


            select *
            from dba_dependencies
            where owner = '&SCHEMA_NAME'
            AND NAME = '&OBJECT_NAME';

            []s

          Visualizando 4 posts - 1 até 4 (de 4 do total)
          • Você deve fazer login para responder a este tópico.
          plugins premium WordPress