Como Recuperar os parametros de uma procedure

Dúvidas, dicas e truques de SQL, Select, Update, Delete, cláusulas, operações com joins, Funções em SQLs, etc
alecoelho
Rank: Estagiário Pleno
Rank: Estagiário Pleno
Mensagens: 5
Registrado em: Sex, 18 Jul 2008 11:01 am
Localização: Rio de Janeiro / RJ

Pessoal,
estou começando minha caminha no mundo do oracle
e gostaria de uma ajuda.

Como eu conseguiria recuperar os parametros de uma procedure...para recuperar as colunas de uma tabela usa-se a tabela USER_TAB_COLUMNS e de uma procedure

Valeu

abraçosss
Trevisolli
Moderador
Moderador
Mensagens: 2016
Registrado em: Qua, 12 Jan 2005 3:25 pm
Localização: Araraquara - SP
Abraço,

Trevisolli
OCA Oracle PL/SQL Developer Certified Associate
OCP Oracle Forms Developer Certified Professional
Araraquara-SP

Brother,

Para se recuperar valores de uma procedure, você deve ter um parâmetro "OUT", para que posteriormente possa lê-lo.

Dê uma pesquisada sobre procedure aqui no fórum, que irá encontrar exemplos interessantes.

Porém, como está iniciando, acho interessante dar uma olhada na nossa parte de "Tutorial/Apostila".

Qualquer coisa, manda pra gente.
alecoelho
Rank: Estagiário Pleno
Rank: Estagiário Pleno
Mensagens: 5
Registrado em: Sex, 18 Jul 2008 11:01 am
Localização: Rio de Janeiro / RJ

Entendi...
minha procedure já tem um parametro de saida, pois já havia pesquisado sobre isso. Por exemplo no sql server a syscolumns armazena tanto as colunas de uma tabela e de uma view como os parametros de uma procedure.
Mas a user_tab_columns não armazena os parametros das procedures.

abraços
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

Acho que ele está se referindo ao dicionário de dados.
Existe uma view chamada ALL_ARGUMENTS que tem todos parâmetros de cada procedure.

Se é isso sua dúvida, aqui tem um link legal:
http://glufke.net/oracle/viewtopic.php?t=11
alecoelho
Rank: Estagiário Pleno
Rank: Estagiário Pleno
Mensagens: 5
Registrado em: Sex, 18 Jul 2008 11:01 am
Localização: Rio de Janeiro / RJ

ACHO QUE E ISSO MESMO AMIGO...
VOU DA UMA TESTADA aqui

OBRIGADO
alecoelho
Rank: Estagiário Pleno
Rank: Estagiário Pleno
Mensagens: 5
Registrado em: Sex, 18 Jul 2008 11:01 am
Localização: Rio de Janeiro / RJ

AINDA NÃO É ISSO...
EU PRECISO RECUPERAR OS NOMES DOS PARAMETROS DE UMA PROCEDURE E SEU TIPO

ABRAÇOS
alecoelho
Rank: Estagiário Pleno
Rank: Estagiário Pleno
Mensagens: 5
Registrado em: Sex, 18 Jul 2008 11:01 am
Localização: Rio de Janeiro / RJ

AMIGOS,
CONSEGUI...MUITO OBRIGADO
Trevisolli
Moderador
Moderador
Mensagens: 2016
Registrado em: Qua, 12 Jan 2005 3:25 pm
Localização: Araraquara - SP
Abraço,

Trevisolli
OCA Oracle PL/SQL Developer Certified Associate
OCP Oracle Forms Developer Certified Professional
Araraquara-SP

Brother, posta pra gente tua solução, ou, caso foi alguma solução apontada nos posts anteriores, nos diga qual é pois os demais podem aproveitar da sugestão tabém.
Avatar do usuário
Toad
Rank: DBA Pleno
Rank: DBA Pleno
Mensagens: 253
Registrado em: Sex, 18 Nov 2005 2:14 pm
Localização: Seattle, WA
Contato:
Matheus Gonçalves
matheus.dev
twitter.com/developer__c

Bom, eu precisei de algo parecido e ficou assim:

Selecionar tudo


create or replace procedure APPP_PES_PARAM_PROCEDURE(pPROCEDURE_NAME IN VARCHAR2, 
                                                     p_cursor        OUT SYS_REFCURSOR   ) is
begin
    
       open p_cursor FOR
       SELECT AA.ARGUMENT_NAME PARAMETRO  ,
              AA.DATA_TYPE     ORACLETYPE ,
              AA.in_out        IN_OUT   
       FROM ALL_ARGUMENTS AA
       where aa.object_name = UPPER(pPROCEDURE_NAME)
       ORDER BY AA.SEQUENCE;
       
end APPP_PES_PARAM_PROCEDURE;
Abraços!
Avatar do usuário
Toad
Rank: DBA Pleno
Rank: DBA Pleno
Mensagens: 253
Registrado em: Sex, 18 Nov 2005 2:14 pm
Localização: Seattle, WA
Contato:
Matheus Gonçalves
matheus.dev
twitter.com/developer__c

Dúvida: Uma vez que eu tenho o nome do parâmetro em uma variável de texto chamada vNM_PAR, existe alguma maneira de eu acessar o valor desse parâmetro, passando comoo varchar2 ?

Exemplo:

Eu executei a procedure acima que busca os nomes dos Parâmetros de uma determinada procedure.

Durante o loop que retorna esses parâmetros, eu atribuo o nome para vNM_PAR. O que quero agora é fazer algo assim:

Selecionar tudo

vVALOR_PARAM := (???)vNM_PAR;
 
Ou seja, pegar o valor do parâmetro, sendo que o nome do parâmetro está em uma variável varchar2.

Tem como??

Obrigado.
Avatar do usuário
Toad
Rank: DBA Pleno
Rank: DBA Pleno
Mensagens: 253
Registrado em: Sex, 18 Nov 2005 2:14 pm
Localização: Seattle, WA
Contato:
Matheus Gonçalves
matheus.dev
twitter.com/developer__c

A pergunta ficou confusa demais? Deu pra entender minha necessidade?

Na real o que eu to tentando criar aqui é um método automático para criar o texto de um log em situações de exception, gravando os nomes dos parâmetros seguido dos valores dos parâmetros.

Os nomes eu já consigo recuperar... preciso agora dos valores.

Idéias?
Responder
  • Informação
  • Quem está online

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