をNULLと私はそれにつまずく:どうやらフェッチリターンが私は、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行)を返します。
'SET'はそれを宣言していませんか? –
@エリック私はそれがループ中にヒットするので、beacuse selectは何か(この場合はNULL)を返します。あなたはもっと早くそれをやることができましたが、私はカーソルとストアドプロシージャを学習しようとしています。 – PaulP
@PaulP、 'select link_rewrite from prod limit 10'はあなたに何を与えるのですか?その場合、私の推測では、あなたがテーブルに 'null'値を持っているということです(行数にかかわらず)。 – Eric