Dúvida na execução de procedure quando tenho param OUT

Dúvidas, dicas e truques de PL/SQL. Aqui também vão assuntos relacionados a pacotes, triggers, funções, Java-Stored Procedures, etc
Responder
evj
Rank: Estagiário Júnior
Rank: Estagiário Júnior
Mensagens: 1
Registrado em: Dom, 27 Dez 2009 4:30 pm
Localização: BELO HORIZONTE-MG
Eloy - BHZ - MG

Prezados,

Criei a procedure abaixo com dois parâmetros modo IN e um com modo OUT mas ao executá-la no banco ocorreu três erros,
tenho dúvidas de como devo chamar a procedure, alguém pode ajudar???

*PROCEDURE:

Selecionar tudo

CREATE OR REPLACE PROCEDURE PR_RELFATURAMENTO(P_DTINICIAL IN LOCACAOLOCADORA.DT_SAIDA%TYPE, P_DTFINAL IN LOCACAOLOCADORA.DT_SAIDA%TYPE, R_VALORTOTAL OUT LOCACAOLOCADORA.VALORMIDIA%TYPE)
IS
  BEGIN
       SELECT SUM(VALORMIDIA) INTO R_VALORTOTAL
       FROM LOCACAOLOCADORA
       WHERE DT_SAIDA BETWEEN P_DTINICIAL AND P_DTFINAL;
  END;
TENTEI EXECUTAR DA SEGUINTE MANEIRA:

Selecionar tudo

VARIABLE saida number(5,2);
CALL PR_RELFATURAMENTO('13/12/2009','13/12/2009', :saida);
PRINT saida
;

*Erros:
1-ORA00900: INSTRUÇÃO SQL INVÁLIDA
2-ORA01008: NEM TODAS AS VARIÁVEIS SÃO LIMITADAS
3-ORA00900: INSTRUÇÃO SQL INVÁLIDA

obs: uso a ferramente PL/SQL-DEV
SergioLBJr
Rank: Oracle Guru
Rank: Oracle Guru
Mensagens: 448
Registrado em: Ter, 16 Jun 2009 3:07 pm
Localização: Parobé - RS
Sérgio Luiz Bonemberger Junior
Programador Junior
Parobé RS

[]s

Cara olhando por cima, acho que o teu parâmetro de saida ta retornando muitos valores.
Avatar do usuário
fsitja
Rank: OraSauro
Rank: OraSauro
Mensagens: 611
Registrado em: Seg, 19 Jan 2009 4:29 pm
Localização: Gaúcho no Rio de Janeiro - RJ
"The scars exist to remind us that the past was real"
Campanha: Como fazer uma pergunta e obter uma resposta.
http://tkyte.blogspot.com/2005/06/how-t ... tions.html

OCA & OCP Developer — OCE SQL Expert — OCS Data Warehousing Specialist

Se for o AllAround PL/SQL Developer e você está na SQL window esses comandos não vão funcionar, teria que ser um bloco pl/sql anônimo, tipo:

Seu tipo LOCACAOLOCADORA.DT_SAIDA%TYPE é um date, correto? Tem que usar conversão explícita, não dependa da configuração de NLS_DATE_FORMAT.

Selecionar tudo

DECLARE
  saida number;
BEGIN
  PR_RELFATURAMENTO(to_date('13/12/2009', 'DD/MM/YYYY'), to_date('13/12/2009', 'DD/MM/YYYY'), saida);
  DBMS_OUTPUT.PUT_LINE(saida);
END;
Responder
  • Informação
  • Quem está online

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