Okey试图找到解决我问题的方法,但是其他所有人似乎都在程序内部拥有此功能,而不是在调用此功能时拥有。猜猜我是独一无二的。

所以我创建了这个程序

USE `DB`;
DROP procedure IF EXISTS `NAME`;

DELIMITER $$
USE `DB`$$
CREATE PROCEDURE `NAME` (IN arg1 INT,IN arg2 INT, OUT arg3 varchar(10))

BEGIN
    UPDATE T1 SET var1 = arg1 WHERE var2 = arg2 ;
    IF((SELECT var2 FROM T1 WHERE var2 = arg2) IS NOT NULL) THEN
        SET arg3 = "YEAH!!";
        COMMIT;
    ELSE
    SET arg3 = "FAIL!!";
        ROLLBACK;
    END IF;
END$$

DELIMITER ;

我现在正尝试使用此代码来调用该过程
SET @arg1 = 1, @arg2 = 2;
CALL `DB`.`NAME`(@arg1, @arg2, @arg3);
SELECT @arg3;

我得到这个错误



如果一个比我头脑更聪明的人可以解释我在做什么错,那将是很乐意的。

最佳答案

编辑:找出它是什么! IF语句不应被()包围

IF (SELECT var2 FROM T1 WHERE var2 = arg2) IS NOT NULL THEN
    SET arg3 = "YEAH!!";
    COMMIT;

这样做,它将起作用!

09-25 18:00