MySQL存储过程导致错误

时间:2015-10-29 11:04:08

标签: mysql stored-procedures

有人可以告诉我我哪里错了吗?

此过程在

附近返回错误
@recuperato = @recuperato - saldofattura; 

我错误地更新变量@recuperato

感谢所有

DELIMITER //
DROP PROCEDURE IF EXISTS fatture_lettere_retail//

CREATE PROCEDURE fatture_lettere_retail (idcontratto INT(11)) 
BEGIN

DECLARE finito INT default 0;
DECLARE idfattura INT default 0;
DECLARE saldofattura DECIMAL(10,2);

DECLARE cur1 CURSOR FOR SELECT idfattura,saldofattura FROM fatture_lettere_isa;

DECLARE CONTINUE HANDLER FOR SQLSTATE '02000'
                SET finito = 1;

SET @recuperato=(SELECT SUM(valorea)-SUM(valorer) FROM ImportiContratto WHERE idcontratto=idcontratto AND idimporto=1);


 ciclo: LOOP
            SET finito = 0;
            FETCH cur1 INTO idfattura,saldofattura;

            IF  finito THEN
                LEAVE ciclo;
            END IF; 

           IF (@recuperato-saldofattura>=0) THEN
              @recuperato = @recuperato-saldofattura;                  
              DELETE FROM fatture_lettere_isa WHERE idfattura=idfattura;  
           ELSE 
              UPDATE fatture_lettere_isa SET saldofattura=saldofattura-@recuperato;
              LEAVE ciclo;
          END IF;


    END LOOP ciclo;

    CLOSE cur1;

END; //

DELIMITER;

2 个答案:

答案 0 :(得分:0)

在相关行的开头添加SET关键字:

SET @recuperato = @recuperato-saldofattura;

答案 1 :(得分:0)

您必须编写SET关键字以将值赋值给变量" @ recuperato"如下:

SET @recuperato = @ recuperato-saldofattura;