Executar procedure com variavel de retorno oracle - sqldeveloper

Tenho a seguinte procedure:

Procedure SPGravarFalhaSaida(pCodEvento in varchar, pTipoPortin number,pTipoPrest in number,
pDataInicial in date, pDataFinal in date,pDtAvaliacao in char,
pNroTipoL in number, pDataInicialEve in date, pDataFinalEve in date,pSequenceConflito out number);

Rodando com o comando:
EXEC PGPOBDOFALHASAIDA.SPGravarFalhaSaida('0341', 0, 1, '25/11/2008', '26/11/2008', 'A', '25/11/2008', '26/11/2008', 0);

Recebo o erro:

Alguém pode ajudar?

Cara, vc precisa informar mais um parâmetro ao chamar a função. Para que a função possa retornar o valor

DECLARE
    outputFalhaSaida NUMBER;
BEGIN
    EXEC PGPOBDOFALHASAIDA.SPGravarFalhaSaida('0341', 0, 1, '25/11/2008', '26/11/2008', 'A', '25/11/2008', '26/11/2008', 0, outputFalhaSaida);
END;


Ainda assim ele não executa, retornando essa mensagem de erro;

Devo declarar mais algo?

Por gentileza, tente dessa forma:

DECLARE
    outputFalhaSaida NUMBER;
BEGIN
    EXEC PGPOBDOFALHASAIDA.SPGravarFalhaSaida('0341', 0, 1, '25/11/2008', '26/11/2008', 'A', '25/11/2008', '26/11/2008', 0, :outputFalhaSaida);
END;

Foi adicionado um REFCURSOR no parâmetro de output.

Assim que executo o comando:

DECLARE
outputFalhaSaida NUMBER;
BEGIN
EXEC PGPOBDOFALHASAIDA.SPGravarFalhaSaida(‘0341’, 0, 1, ‘25/11/2008’, ‘26/11/2008’, ‘A’, ‘25/11/2008’, ‘26/11/2008’, :outputFalhaSaida);
END;

O sqlDeveloper me mostra a seguinte tela:

image

e o seguinte erro:

Sabe o que pode estar acontecendo?

É necessário ter PGPOBDOFALHASAIDA.(...) pq só não EXEC SPGravarFalhaSaida(....) ?

Mexi poucas vezes com DB Oracle, mas acho que isso deveria funcionar…

Sim, é necessário, pois é um packege que contem a procedure. Então preciso acessar um e depois com o auxilio do ‘.’ chamar a minha procedure. Mas ainda sem sucesso pra solução :frowning:

Faça o seguinte:

DECLARE
    outputFalhaSaida NUMBER;
BEGIN
    PGPOBDOFALHASAIDA.SPGravarFalhaSaida('0341', 0, 1, '25/11/2008', '26/11/2008', 'A', '25/11/2008', '26/11/2008', 0, outputFalhaSaida);
    DBMS_OUTPUT.PUT_LINE(outputFalhaSaida);

END;

Encontrei a solução:

  VARIABLE outputFalhaSaida NUMBER;
    EXEC PGPOBDOFALHASAIDA.SPGRAVARFALHASAIDA('0215',0,0,'26/11/2008','28/11/2008','A',2000,'30/09/2009','30/09/2020',:PSEQUENCECONFLITO);
    PRINT outputFalhaSaida ;

Não sei o pq, mas a variavel deveria ser declarada dessa maneira acima, e a posição do parametros estavam erradas…

Obrigado pela ajuda.

1 curtida