0

我有这个存储过程:

DELIMITER //
DROP PROCEDURE IF EXISTS cursor_example//

CREATE PROCEDURE cursor_example()
BEGIN
    DECLARE niche_id INT;
    DECLARE niche_name VARCHAR(100);

    DECLARE curl CURSOR FOR SELECT * FROM `niche`;
    DECLARE CONTINUE HANDLER FOR NOT FOUND SET done=1;

    OPEN curl;
    my_loop:LOOP
        FETCH curl INTO niche_id, niche_name;
        IF done=1 THEN
            LEAVE my_loop;
        END IF;
    END LOOP my_loop;
    CLOSE curl;
END//

DELIMITER ;

问题是,在游标完成迭代后,我如何将niche id 和niche_name 行从游标中取出。我无法从存储过程中获取结果集作为变量,不是吗?那么存储过程使用游标主要是为了内部目的吗?

4

1 回答 1

0

如果结果是 - 'scalar values',那么您可以使用以下变体之一:

  1. SELECT niche_id, niche_name;从程序运行。
  2. 使用 OUT 参数。

如果结果是一组值,那么您应该填充另一个表,例如临时表。

另外,如果您想从表中读取一些数据并将其存储到另一个表中,请尝试使用INSERT ... SELECT语句而不是打开游标。

于 2012-09-05T10:21:05.213 回答