2016-12-16 117 views
0

我在与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 

回答

0

你不能一个元组分配给一个变量。

此:

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

应该是:

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

WTF ...我没有注意到..我忘了把concat函数..hahahah谢谢@Bill Karwin。 – mrRobot

+0

这是生病..我怎么可能甚至没有注意到比尔哈哈哈......这个问题让我的头痛了昨天.. – mrRobot

+0

是的!我们都去过那里。你非常关注原因是你的一个查询,你忽略了简单的'SET'语句。干杯! –

0

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

+0

有时候会出现小问题或小问题。看到..我很高兴我现在是一个stackoverflow成员.. – mrRobot

相关问题