2016-12-16 2 views
0

Здесь я нашел разные темы в stackoverflow, связанные с Mysql Error: 1241. И когда я прочитал все темы, у них есть некоторые общие проблемы, связанные с их подзапросами. Но моя проблема другая.MySql Код: 1241 операнд должен содержать 1 столбец

ПРОБЛЕМА: - MySql Код: 1241 операнд должен содержать 1 столбец (ы)

ОТ - один из моих хранимой процедуры с подготовленными операторами

ПРИМЕЧАНИЕ - Мой выбор заявление не имеет подзапроса, а также моего оператора обновления.

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

Иногда возникают небольшие или крошечные проблемы, которые мы не можем. see..im happy im теперь является членом stackoverflow .. – mrRobot

Смежные вопросы