mysql调用过程错误代码:1241。操作数应包含1列

时间:2015-11-24 19:21:16

标签: mysql error-handling

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;

我收到此错误

  

错误代码:1241。操作数应包含1列

如果有一个比我更聪明的人能够解释我做错了什么,那就太爱了。

1 个答案:

答案 0 :(得分:0)

编辑:发现它是什么! IF语句不应该被()

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

这样做会有效!