Problemas com Stored Procedure

Firebird

26/07/2005

criei a seguinte sp no firebird só que na hora que eu chamo ela, não da erro não acontece nada.

execute PROCEDURE SPGRARIT (515,3,7,2005,2,´1234569´,´2005/10/10´,´p´,12)



SET TERM @;
CREATE PROCEDURE SPGRARIT (ITEM INTEGER,QTDE SMALLINT, MESENT SMALLINT,ANOENT SMALLINT,DOCENT INTEGER,
LOTE VARCHAR(20),VALIDADE DATE,TIPOMOV CHAR(1),ARM SMALLINT)
RETURNS (ITEM1 INTEGER, SEQ1 INTEGER)

AS
DECLARE VARIABLE SEQ INTEGER;
DECLARE VARIABLE QTDE1 INTEGER;
BEGIN

SELECT MAX(SEQ) FROM GERASITE WHERE ITEM = :ITEM INTO :SEQ;

SEQ1 = :SEQ + 1;

WHILE (QTDE < QTDE1) DO
BEGIN
QTDE1 = QTDE1 + 1;
SEQ = SEQ + 1;
INSERT INTO GERASITE (ITEM,SEQ,MES_ENT,ANO_ENT,DOC_ENT,LOTE,VALIDADE,TIPO_MOV,ARM) VALUES
(:ITEM,:SEQ,:MESENT,:ANOENT,:DOCENT,:LOTE,:VALIDADE,:TIPOMOV,:ARM);

END
ITEM1 = :ITEM;
SUSPEND;
END;@

[color=green:ace0476125]Movido de Delphi para Interbase/Firebird[/color:ace0476125]


Leonardobhbr

Leonardobhbr

Curtidas 0

Respostas

Afarias

Afarias

26/07/2005

SUSPEND só deve ser usado em Procedures de seleção, ex:

select * from SPGRARIT (515,3,7,2005,2,´1234569´,´2005/10/10´,´p´,12)



não sei se é o caso (mas não parece q seja) ... no mais ...

... como assim não acontece nada?!? Então o procedimento não está inserindo os valores corretamente na tabela GERASITE ?!?!


T+


GOSTEI 0
Leonardobhbr

Leonardobhbr

26/07/2005

ele passa não da erro mais tbem não grava registroo nenhum ja usei todos os componentes possivel SQLStoredProc,SQLDataSet e nada o engraçado é que se eu eu colocar uma SQLStoredProc e der um active em tempo de projeto ele mostra a mensagem de erro e grava mais em execução quando eu mando execproc não mostra nenhum erro, e não grava nada, e no iboConsole funciona normal.


GOSTEI 0
Gandalf.nho

Gandalf.nho

26/07/2005

Colocar um EXIT no lugar do SUSPEND não ajuda?


GOSTEI 0
Beppe

Beppe

26/07/2005

Mude:

1) SELECT MAX(SEQ) para SELECT coalesce(MAX(SEQ), 0)
2) Inicialize QTDE1


GOSTEI 0
POSTAR