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:
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
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;
oracle, package
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