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

标签 mysql error-handling

好吧,试图找到解决我问题的方法,但其他人似乎在程序中都有这个,而不是在他们调用它时。我想我是独一无二的..

所以我创建了这个程序

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;

我收到此错误

Error Code: 1241. Operand should contain 1 column(s)

如果有比我更聪明的人能够解释我做错了什么,我会很高兴。

最佳答案

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

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

这样做就会起作用!

关于mysql调用过程错误代码: 1241.操作数应包含1列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33902065/

相关文章:

mysql - 加载简单的 CSV 文件 MySQL

mysql - 获取在不同表中形成的父类别总和(价格)

vb.net - 出现错误时,转到下一个所需的操作,而不是下一行

php - Uncaught Error : Call to a member function find() on boolean

python - python如何在无限循环期间处理KeyboardInterrupt?

jquery - 为什么我会因为 jQuery 而出现 'failed to initiate app' 错误?

mysql - 如何使用通配符 (%) 搜索但不包含空格?

mySQL多表选择超过3个表

mysql - 选择 localhost 的语句并插入网络数据库

c - 处理 C 中的 send e receive 错误