好吧,试图找到解决我问题的方法,但其他人似乎在程序中都有这个,而不是在他们调用它时。我想我是独一无二的..
所以我创建了这个程序
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/