Ir para conteúdo
Fórum Script Brasil
  • 0

(Resolvido) Update em SP


ritamara

Pergunta

Pessoal, bom dia!

Tenho a seguinte SP...

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)
Link para o comentário
Compartilhar em outros sites

1 resposta a esta questão

Posts Recomendados

Visitante
Este tópico está impedido de receber novos posts.


  • Estatísticas dos Fóruns

    • Tópicos
      152,4k
    • Posts
      652,1k
×
×
  • Criar Novo...