MySQL存储过程导致错误

标签 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;

最佳答案

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

SET @recuperato = @recuperato-saldofattura;

关于MySQL存储过程导致错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33412481/

相关文章:

mysql - 在mysql存储过程中声明变量

database - 如何从 IBM 命令行运行存储过程?

java在Mongo中创建并启动存储过程?

php - 使用 mysqlnd 在 PHP 5.5 上正确检测高于 5 的 mysql

php - 我应该使用哪种 SQL 类型来输入值 4.865472349

php - 我想根据页面 ID 从多个表中获取数据到我的结账页面

mysql - & 在这个查询中代表什么

java - Hibernate 查询中的 Oracle 存储过程执行

mysql - 在 MySQL 存储过程中的 WHERE 子句中使用 IN 参数

mysql - 我怎样才能加速这个(相对简单的)查询