[英]MySql Code: 1241 operand should contain 1 column(s)
在這里,我在與MySQL錯誤:1241相關的stackoverflow中找到了不同的主題。當我閱讀所有主題時,它們在子查詢方面存在一些常見問題。 但是我的問題不同。
問題: -MySql代碼:1241操作數應包含1列
FROM-我的存儲過程之一,帶有准備好的語句
注意 -我的select語句沒有子查詢,也沒有我的update語句。
屏幕拍攝 - 實際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
您不能將元組分配給單個變量。
這個:
SET msgresult=("No. of affected rows(s):",@RowsAffected1,", from modification process.");
應該:
SET msgresult=CONCAT("No. of affected rows(s):",@RowsAffected1,", from modification process.");
語法錯誤,從選擇中刪除()。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.