結果

2016-12-21 9 views
0

として、私は基本的に使用して、同じテーブルの列「コメント」への2つの列「not_goodと良い」のいずれかの値を転送するためになされ、以下の手順を有しますグレード値:結果

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 ; 

私は、私は、次のエラーが表示CALL add_comentarios();とき:

#1172 - Result consisted of more than one row 

は私が

PSをしたいとそれを動作させる方法を見つけ出すことはできません:私はbegginerののRSRにどんな答えを

おかげでたくさんです!

+0

PROCEDURE名を宣言したものと、どのPROCEDUREを呼び出していますか? – denny

答えて

0

SELECT X INTO Yクエリは単一の結果クエリに対してのみ有効です。あなたのクエリはテーブル全体から選択するので、テーブルが単一の行を持つ場合にのみ有効になります。あなたがやろうとしているが

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

....とにかく単一のクエリで行うことができます句を選択し、コールした後、この

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$$ 

のようなあなたのクエリので、一度に複数のレコードをフェッチプロシージャを作成しましたCALL add_comment();