Procedimentos e Funcoes em Packages

DBA Geral (instalação, configuração do banco, scripts do Sql*Plus, shell scripts, batch scripts, etc...)
Responder
Zida
Rank: Programador Sênior
Rank: Programador Sênior
Mensagens: 53
Registrado em: Ter, 08 Jun 2004 2:59 pm
Localização: Toledo - PR

Boa tarde pessoal,
Gostaria de saber se existe alguma maneira de eu encontrar atravez de selects, quais procedimentos e funcoes uma package contem.
alguém saberia me dizer se é possivel ?


Muito obrigado

Rafael Mascarello
Zida
Rank: Programador Sênior
Rank: Programador Sênior
Mensagens: 53
Registrado em: Ter, 08 Jun 2004 2:59 pm
Localização: Toledo - PR

Achei algo que funciona ...

Selecionar tudo

SELECT *
FROM (
SELECT NAME NAME_PACKAGE,
       SUBSTR(LTRIM(TEXT),
              INSTR(LTRIM(TEXT),' ')+1,
              NVL(INSTR(SUBSTR(LTRIM(TEXT),INSTR(LTRIM(TEXT),' ')+1,LENGTH(LTRIM(TEXT))),'('), LENGTH(LTRIM(TEXT)))-1
              ) NM_PROCEDURE,
        SUBSTR(LTRIM(TEXT),1,INSTR(LTRIM(TEXT),' ')-1) TYPE
    FROM SYS.ALL_SOURCE
   WHERE OWNER = 'MAXICON' 
     AND TYPE = 'PACKAGE BODY'
     AND SUBSTR(LTRIM(TEXT),1,INSTR(LTRIM(TEXT),' ')-1) IN ('PROCEDURE','FUNCTION')
)
WHERE NAME_PACKAGE = 'NOME_DA_PACK'
Avatar do usuário
dr_gori
Moderador
Moderador
Mensagens: 5024
Registrado em: Seg, 03 Mai 2004 3:08 pm
Localização: Portland, OR USA
Contato:
Thomas F. G

Você já respondeu a dúvida de alguém hoje?
https://glufke.net/oracle/search.php?search_id=unanswered

Eu achei o seguinte, que apenas LISTA quais procedures e functions que a package tem:

Selecionar tudo

SQL> select PROCEDURE_NAME
  2  from USER_PROCEDURES
  3  WHERE OBJECT_NAME = 'PK_IMPORTA_EMBARQUES'
  4  /

PROCEDURE_NAME
------------------------------
PC_APAGA_EMBARQUES
PC_EXCLUI_ARQUIVO
PC_GERA_EMBARQUES
PC_GERA_INDIVIDUAL
PC_GERA_TODOS_DINF
PC_IMPORTA_ARQUIVOS
PC_IMPORTA_INDIVIDUAL
PC_LOG_IMPORTACAO

8 rows selected.

SQL> 
DriwLL
Rank: Estagiário Pleno
Rank: Estagiário Pleno
Mensagens: 3
Registrado em: Seg, 07 Jun 2004 8:00 am
Localização: Toledo - PR
----------------------------
DriwLL
Programador Junior
Oracle/Forms

nesse caso teria como saber se os objetos retornados são function ou package?
Zida
Rank: Programador Sênior
Rank: Programador Sênior
Mensagens: 53
Registrado em: Ter, 08 Jun 2004 2:59 pm
Localização: Toledo - PR

Opa, joia, muito obrigado pela colaboracao de vocês :)
fico muito agradecido mesmo ...

e respondendo a ultima pergunta, sim, precisaria saber qual o tipo, se é procedure ou funcao..



mais uma vez, muito obrigado pela ajuda moçada
DriwLL
Rank: Estagiário Pleno
Rank: Estagiário Pleno
Mensagens: 3
Registrado em: Seg, 07 Jun 2004 8:00 am
Localização: Toledo - PR
----------------------------
DriwLL
Programador Junior
Oracle/Forms

Acho que isso já dá uma boa ajuda.

Selecionar tudo

CREATE OR REPLACE VIEW VIEW_PACKAGE_CONTENTS AS
SELECT * 
FROM (
       SELECT ALL_OBJECTS.OBJECT_NAME NAME_PACKAGE,
              ALL_ARGUMENTS.OBJECT_NAME NAME_CONTENTS,
              'FUNCTION' OBJECT_TYPE
          FROM ALL_ARGUMENTS , ALL_OBJECTS
         WHERE ALL_ARGUMENTS.OBJECT_ID = ALL_OBJECTS.OBJECT_ID
           AND ALL_OBJECTS.OBJECT_TYPE = 'PACKAGE'
           AND ALL_ARGUMENTS.ARGUMENT_NAME IS NULL
      UNION 
       SELECT DISTINCT ALL_OBJECTS.OBJECT_NAME NAME_PACKAGE,
              ALL_ARGUMENTS.OBJECT_NAME NAME_CONTENTS,
              'PROCEDURE' OBJECT_TYPE
          FROM ALL_ARGUMENTS , ALL_OBJECTS
         WHERE ALL_ARGUMENTS.OBJECT_ID = ALL_OBJECTS.OBJECT_ID
           AND ALL_OBJECTS.OBJECT_TYPE = 'PACKAGE'
           AND ALL_ARGUMENTS.ARGUMENT_NAME IS NOT NULL
           AND ALL_ARGUMENTS.OBJECT_NAME NOT IN ( SELECT DISTINCT A.OBJECT_NAME
                                                  FROM ALL_ARGUMENTS A
                                                 WHERE A.OBJECT_ID = ALL_OBJECTS.OBJECT_ID
                                                   AND A.ARGUMENT_NAME IS NULL ) )
ORDER BY NAME_PACKAGE ,NAME_CONTENTS,OBJECT_TYPE
:lol: :lol:
Avatar do usuário
dr_gori
Moderador
Moderador
Mensagens: 5024
Registrado em: Seg, 03 Mai 2004 3:08 pm
Localização: Portland, OR USA
Contato:
Thomas F. G

Você já respondeu a dúvida de alguém hoje?
https://glufke.net/oracle/search.php?search_id=unanswered

nada mal... :-o
Responder
  • Informação
  • Quem está online

    Usuários navegando neste fórum: Nenhum usuário registrado e 13 visitantes