加入收藏 | 设为首页 | 会员中心 | 我要投稿 阜阳站长网 (https://www.0558zz.com/)- 科技、建站、内容创作、云计算、网络安全!
当前位置: 首页 > 数据库 > MySql > 正文

mysql – 显然fetch返回NULL

发布时间:2020-12-05 04:42:10 所属栏目:MySql 来源:互联网
导读:我正在学习存储过程,mysql中的游标,我偶然发现它:delimiter // CREATE PROCEDURE some_func() BEGIN DECLARE link_rewrite VARCHAR(255); DECLARE link_rewrite_cursor CURSOR FOR SELECT link_rewrite FR

我正在学习存储过程,mysql中的游标,我偶然发现它:

delimiter //

CREATE PROCEDURE some_func()
BEGIN
    DECLARE link_rewrite VARCHAR(255);
    DECLARE link_rewrite_cursor CURSOR FOR SELECT link_rewrite FROM prod;

    OPEN link_rewrite_cursor;

    SET @count = 0;

    WHILE @count < 10 DO
        FETCH link_rewrite_cursor INTO link_rewrite;
        SELECT link_rewrite;
        set @count = @count + 1;
    END WHILE;

    CLOSE link_rewrite_cursor;

END//

delimiter ;

我的问题是:为什么SELECT link_rewrite总是返回NULL(在prod表中有9000行). SELECT link_rewrite FROM prod返回很多行(9000行). 最佳答案 您应避免对多个不同的事物使用相同的名称.具体来说,为变量指定与您选择的列不同的名称.例如,如果重命名变量v_link_rewrite,那么它可能会起作用:

delimiter //

DROP PROCEDURE IF EXISTS some_func //

CREATE PROCEDURE some_func()
BEGIN
    DECLARE v_link_rewrite VARCHAR(255);
    DECLARE link_rewrite_cursor CURSOR FOR SELECT link_rewrite FROM prod;

    OPEN link_rewrite_cursor;

    SET @count = 0;

    WHILE @count < 10 DO
        FETCH link_rewrite_cursor INTO v_link_rewrite;
        SELECT v_link_rewrite;
        set @count = @count + 1;
    END WHILE;

    CLOSE link_rewrite_cursor;

END//

delimiter ;

(编辑:阜阳站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读