Fórum Comando quot;Suspendquot; em StoredProcedure #254391
14/10/2004
0
DECLARE VARIABLE ATUAL FLOAT; BEGIN SELECT QUANTIDADE FROM PRODUTOS WHERE CODIGO=:PRODUTO INTO :ATUAL; NEWQUANT = :ATUAL-:NQUANT; UPDATE PRODUTOS SET QUANTIDADE=:NEWQUANT WHERE CODIGO=:PRODUTO; END
Nessa SP eu não usei o comando Suspend. Hoje fui fazer uma outra SP para gerar um novo código de um generator caso seja necessário:
DECLARE VARIABLE TCODIGO INTEGER; begin SELECT CODSUB FROM NOTAS WHERE DATA=:PDATA AND FORNECEDOR=:PFORNECEDOR INTO :TCODIGO; IF (TCODIGO > 1) THEN BEGIN SCODIGO = TCODIGO; END ELSE BEGIN INSERT INTO NOTAS (DATA,FORNECEDOR) VALUES (:PDATA,:PCLINICA); SELECT CODSUB FROM NOTAS WHERE DATA=:PDATA AND FORNECEDOR=:PFORNECEDOR INTO :SCODIGO; END SUSPEND; end
O fato que eu não consegui entender é que essa segunda só retorna o valor para ´SCODIGO´ se eu usar esse suspend no final já a primeira sem o suspend retorna o valor. Por que isso acontece?
Até!
Delphi32
Curtir tópico
+ 0Posts
14/10/2004
Dorivansousa
comando EXIT, pois o procedure não é retomado. Porém, em um select procedure, a execução é retomada no comando seguinte ao SUSPEND quando o próximo FETCH do SELECT é executado. Atenção para que um
parâmetro de saída que não tenha tido atribuição pode voltar qualquer valor.
Gostei + 0
14/10/2004
Dorivansousa
http://www.comunidade-firebird.org/modules.php?name=Downloads&d_op=viewdownloaddetails&lid=43&title=Introdução a Stored Procedures e Triggers no Firebird
ou baixe direto:
[url]http://www.comunidade-firebird.org/modules.php?name=Downloads&d_op=getit&lid=43[/url]
Gostei + 0
14/10/2004
Martins
Palavras do Anderson.
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)