我在与Mysql Error:1241相关的stackoverflow中发现了不同的主题。并且当我阅读所有主题时,他们在其子查询中遇到了一些相关的常见问题。但我的问题是不同的。MySql代码:1241操作数应该包含1列
问题: - MySQL代码:1241操作数应包含1列(S)
FROM - 我的一个存储过程的预处理语句
注意 - 我的select语句没有子查询以及我的更新语句。
屏幕截图 - ACTUAL SS
存储过程代码
CREATE PROCEDURE CancelRow_EM(IN tbl_name VARCHAR(25), IN rowindex FLOAT, OUT flagresult TINYINT, OUT msgresult VARCHAR(300))
BEGIN
START TRANSACTION;
IF tbl_name="emps_tbl" THEN
SET @PrimaryCol="EMPS_ID";
SET @RefCol="OBR NO.";
ELSEIF tbl_name="emmooe_tbl" THEN
SET @PrimaryCol="EMMOOE_ID";
SET @RefCol="PR NO.";
ELSEIF tbl_name="emco_tbl" THEN
SET @PrimaryCol="EMCO_ID";
SET @RefCol="PR NO.";
END IF;
SET @select1=CONCAT("SELECT `LINK_ID`,`",@RefCol,"` INTO @li,@Ref FROM `",tbl_name,"` WHERE ROUND(`EMPS_ID`,3)=",rowindex);
PREPARE stmtselect1 FROM @select1;
EXECUTE stmtselect1;
DEALLOCATE PREPARE stmtselect1;
If @li IS NOT NULL THEN
SET flagresult=0;
SET msgresult="Cancellation of record was stopped. Reason: Earmark record was already utilize.";
ELSE
SET @update1=CONCAT("UPDATE `",tbl_name,"` SET `CANCEL_STATUS`=1 WHERE ROUND(`",@PrimaryCol,"`,3)=",rowindex," AND `",@RefCol,"`='",@Ref,"'");
PREPARE stmtupdate1 FROM @update1;
EXECUTE stmtupdate1;
SELECT row_count() INTO @RowsAffected1;
DEALLOCATE PREPARE stmtupdate1;
IF @RowsAffected1>0 THEN
SET flagresult=1;
SET msgresult=("No. of affected rows(s):",@RowsAffected1,", from modification process.");
COMMIT;
ELSE
SET flagresult=0;
SET msgresult=("There are no affected row(s) from modification process.");
ROLLBACK;
END IF;
END IF;
END
WTF ...我没有注意到..我忘了把concat函数..hahahah谢谢@Bill Karwin。 – mrRobot
这是生病..我怎么可能甚至没有注意到比尔哈哈哈......这个问题让我的头痛了昨天.. – mrRobot
是的!我们都去过那里。你非常关注原因是你的一个查询,你忽略了简单的'SET'语句。干杯! –