2016-12-21 13 views
0

ich das folgende Verfahren habe, die ich im Grunde die Werte aus einer der beiden Spalten „not_good und guten“ die Spalte „Kommentar“ in der gleichen Tabelle übertragen gemacht mit die Grad Wert:Mehr als eine Zeile als Ergebnis

DELIMITER $$ 
CREATE OR REPLACE PROCEDURE add_comments() 
BEGIN 

DECLARE var INT; 
SELECT grade INTO var FROM table2; 

    IF (var <= 7) THEN 
     UPDATE table2 set comment = not_good; 
    ELSE 
     UPDATE table2 set comment = good; 
    END IF; 
END$$ 
DELIMITER ; 

Als ich CALL add_comentarios(); erhalte ich folgende Fehlermeldung:

#1172 - Result consisted of more than one row 

Kann nicht herausfinden, wie es funktioniert, wie ich

PS wollen: Ich bin begginer rsrs

Vielen Dank für jede Antwort!

+0

Was Sie PROCEDURE-Namen deklariert haben und welche Prozedur rufen Sie an? – denny

Antwort

0

SELECT X INTO Y Abfragen sind nur für einzelne Ergebnisabfragen gültig; Da Ihre Abfrage die gesamte Tabelle auswählt, wäre sie nur gültig, wenn die Tabelle eine einzelne Zeile hätte. sowieso getan ....

UPDATE table2 
SET comment = CASE WHEN grade <= 7 THEN 'not_good' ELSE 'good' END 
; 
0

select Klausel mehrere Datensätze auf einmal holen, damit Ihre Abfrage wie diese nach dem Aufruf

CREATE PROCEDURE add_comment() BEGIN declare var int; SELECT grade INTO var FROM table2 limit 1; if(var <= 7) then update table2 set comment = 'not_good'; else update table2 set comment = 'good'; END IF; END$$ 

Was Sie versuchen, mit einer einzigen Abfrage zu tun, kann der Prozedur, die erstellt CALL add_comment();

Verwandte Themen