2016-12-16 3 views
0

Ich habe verschiedene Themen hier in stackoverflow im Zusammenhang mit Mysql Fehler: 1241. Und während ich alle Themen gelesen habe, haben sie einige gemeinsame Probleme in Bezug auf ihre Unterabfragen. Aber mein Problem ist anders.MySql Code: 1241 Operand sollte 1 Spalte (n) enthalten

PROBLEM: - MySql Code: 1241 Operand 1 Spalte (n)

VON enthalten sollte - Einer meiner Stored Procedure mit vorbereiteten Anweisungen

HINWEIS - My select-Anweisung hat keine Unterabfrage sowie meine Update-Anweisung.

SCREEN SHOT - ACTUAL 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 

Antwort

0

Sie nicht ein Tupel zu einer einzigen Variablen zuweisen können. Diese

:

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

Sollte sein:

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

WTF ... Ich habe nicht bemerkt, dass ..ich vergaß, concat Funktion..hahahah Dank @ Bill Karwin setzen. – mrRobot

+0

das ist krank..wie kann ich auch nicht bemerkt, dass Bill hahaha..this problem machen meinen kopf gestern .. – mrRobot

+0

Yep! Das haben wir alle schon durchgemacht. Du warst so auf die Ursache fokussiert, dass du eine der Fragen warst, bei der du die einfache 'SET'-Anweisung übersehen hast. Prost! –

0

Syntaxfehler, entfernen Sie die() aus wählen.

+0

Manchmal gibt es kleine oder kleine Probleme, die wir nicht können. see..im froh bin ich jetzt ein Mitglied von stackoverflow .. – mrRobot

Verwandte Themen