简体   繁体   English

MySql代码:1241操作数应包含1列

[英]MySql Code: 1241 operand should contain 1 column(s)

I found different topics here in stackoverflow related to Mysql Error: 1241. And as I read all the topics, they have some common issues related on their sub-queries. 在这里,我在与MySQL错误:1241相关的stackoverflow中找到了不同的主题。当我阅读所有主题时,它们在子查询方面存在一些常见问题。 But my problem is different. 但是我的问题不同。

PROBLEM: - MySql Code: 1241 operand should contain 1 column(s) 问题: -MySql代码:1241操作数应包含1列

FROM - One of my Stored Procedure with prepared statements FROM-我的存储过程之一,带有准备好的语句

NOTE - My select statement has no sub-query as well as my update statement. 注意 -我的select语句没有子查询,也没有我的update语句。

SCREEN SHOT - ACTUAL SS 屏幕拍摄 - 实际SS

STORED PROCEDURE CODE 储存程序代码

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

You can't assign a tuple to a single variable. 您不能将元组分配给单个变量。

This: 这个:

SET msgresult=("No. of affected rows(s):",@RowsAffected1,", from modification process.");

Should be: 应该:

SET msgresult=CONCAT("No. of affected rows(s):",@RowsAffected1,", from modification process.");

语法错误,从选择中删除()。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM