DELIMITER $$
DROP PROCEDURE IF EXISTS `mercodb`.`func_baixa_teste` $$
CREATE PROCEDURE `mercodb`.`func_baixa_teste` ()
BEGIN
DECLARE existe_mais_linhas INT DEFAULT 0;
DECLARE var_idcontrec BigInt(20);
DECLARE var_loja int(3);
DECLARE var_lojarec int(3);
DECLARE var_caixa int(3);
DECLARE var_tipodoc char(1);
DECLARE var_nrdoc bigint(16);
DECLARE var_docto varchar(16);
DECLARE var_desdobr char(2);
DECLARE var_datareceb datetime;
DECLARE var_valor decimal(13,2);
DECLARE var_cdhist int(5);
DECLARE var_portador int(6);
DECLARE var_usuario varchar(30);
DECLARE var_pendente decimal(13,2);
DECLARE var_atraso int(6);
DECLARE var_juros decimal(13,2) DEFAULT 0.00;
DECLARE var_obsjuros varchar(40);
DECLARE meu_cursor CURSOR FOR SELECT t.idcontrec, t.pendente, t.valor, t.atraso, t.juros, t.datareceb, t.obsjuros, t.nrdoctorec, t.usr, t.loja,
c.nrdoc, c.tipodoc, c.desdobr, c.loja, c.caixa, c.cdhist, c.portador
FROM tmp_rita t
inner join contrec c on c.id=t.idcontrec;
-- Definição da variável de controle de looping do cursor
DECLARE CONTINUE HANDLER FOR NOT FOUND SET existe_mais_linhas=1;
DECLARE EXIT HANDLER FOR SQLWARNING
BEGIN
SELECT 'O dado foi truncado!' AS Msg_1;
ROLLBACK; -- a transação sofre um ROLLBACK
SELECT 'A transação sofreu um ROLLBACK!' AS Msg_2;
END;
/*inicio a transaction*/
START TRANSACTION;
-- Abertura do cursor
OPEN meu_cursor;
-- Looping de execução do cursor
meuLoop: LOOP
FETCH meu_cursor INTO var_idcontrec, var_pendente, var_valor, var_atraso, var_juros, var_datareceb, var_obsjuros, var_docto, var_usuario, var_lojarec,
var_nrdoc, var_tipodoc, var_desdobr, var_loja, var_caixa, var_cdhist, var_portador;
-- Controle de existir mais registros na tabela
IF existe_mais_linhas = 1 THEN
LEAVE meuLoop;
END IF;
-- Grava uma ocorrência na movrec
insert into movrec set loja = var_loja,
caixa = var_caixa,
tipodoc = var_tipodoc,
nrdoc = var_nrdoc,
desdobr = var_desdobr,
data = var_data,
valor = var_valor,
cdhist = var_cdhist,
nrdocto = var_nrdoc,
portador = var_portador,
usuarui = var_usuario,
lojarec = var_lojarec;
UPDATE contrec SET valrec = (valrec+var_pendente),
receb = var_data,
atraso = var_atraso,
usrrec = var_usuario,
WHERE id = var_idcontrec;
-- Se tiver juros eu lanco uma ocorrência na corno
IF var_juros > 0 THEN
insert into contrecocorfin set loja = var_lojarec,
caixa = var_caixa,
tipodoc = var_tipodoc,
nrdoc = var_nrdoc,
desdobr = var_desdobr,
data = var_data,
valor = var_juros,
obs = var_obsjuros,
usrinc = var_usuario;
END IF;
-- Retorna para a primeira linha do loop
END LOOP meuLoop;
COMMIT;
end $$
DELIMITER;
Porém ao executar o código acima apresenta mensagem de erro na linha do update. Qualquer ajuda será bem vinda!
Obrigada! :rolleyes:
Editado por Jonathan Queiroz Remover caixa alta do título (Jonathan)
Pergunta
ritamara
Pessoal, bom dia!
Tenho a seguinte SP...
Porém ao executar o código acima apresenta mensagem de erro na linha do update. Qualquer ajuda será bem vinda!
Obrigada! :rolleyes:
Editado por Jonathan QueirozRemover caixa alta do título (Jonathan)
Link para o comentário
Compartilhar em outros sites
1 resposta a esta questão
Posts Recomendados