【发布时间】:2016-04-04 03:55:43
【问题描述】:
我一直在编写这段代码,根据这本书应该这样做:
编写一个脚本来创建和调用名为 test 的存储过程。 这个存储过程应该为一个结果集创建一个游标, 由每个产品的 product_name 和 list_price 列组成 标价超过 700 美元。此结果中的行 set 应按标价降序排列。然后, 过程应该显示一个字符串变量,其中包括 product_name 和每个产品的标价,所以看起来有点像 像这样:
"Gibson SG", "2517.00" | "Gibson Les Paul", "1199.00""
不幸的是,我的代码所做的是返回一个空值而不是任何东西。我做错了什么?
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;
【问题讨论】:
标签: mysql stored-procedures cursor