私は本によると、これを行うことになっています。このコードに取り組んできました:MySQLカーソルの問題:どうしたのですか?
が作成し、テストという名前のストアドプロシージャ呼び出すスクリプトを書きます。 このストアド・プロシージャは、 が各製品のproduct_nameおよびlist_price列で構成されている結果セットに対してカーソルを作成して、リスト価格が$ 700を超える を作成する必要があります。この結果の行 は、リスト価格で降順にソートする必要があります。
"Gibson SG", "2517.00" | "Gibson Les Paul", "1199.00""
は、残念ながら何私のコードが行うことは何でもするのではなく、null値を返す次のとおりです。次に、 手順は、それがこのような何か に見えるように、各製品の PRODUCT_NAMEやリストの価格を含んでいる文字列変数を表示する必要があります。私は間違って何をしていますか?いずれかの引数がnull
ある場合
USE my_guitar_shop;
DROP PROCEDURE IF EXISTS test;
DELIMITER //
Create Procedure test()
Begin
DECLARE names_var VARCHAR(50);
DECLARE prices_var DECIMAL (8,2);
DECLARE results VARCHAR(150);
DECLARE done TINYINT;
DECLARE products_cursor CURSOR FOR
SELECT product_name, list_price FROM products;
DECLARE continue handler for not found set done = 1;
SET done = 0;
OPEN products_cursor;
testloop : loop
FETCH products_cursor INTO names_var, prices_var;
IF done = 1 then leave testloop;
END IF;
IF prices_var > 700 THEN
SET results = concat(results, "names_var", ', ', "prices_var", '|');
END if;
END loop testloop;
CLOSE products_cursor;
SELECT results;
END //
DELIMITER ;
Call test;
それはしませんでした。それは列の名前を変更しただけで、私はこれらのためのパラメータを行う必要はなく、結果だけです。 – Samuel
私は 'CONCAT'のためのドキュメントを読んだだけです。私は良いアイデアを持っています。 –