我學習的存儲過程,遊標在mysql和我絆倒它:顯然取返回NULL
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 ;
我的問題是:爲什麼選擇link_rewrite總是返回NULL(在PROD表有9000行)。 SELECT link_rewrite FROM prod返回很多行(9000行)。
SET'不聲明它? – 2012-01-04 19:12:05
@Eric它確實是選擇返回的東西(在這種情況下爲NULL),所以在我看來它擊中while循環。是的,你可以做得更快,但我想學習遊標和存儲過程。 – PaulP 2012-01-04 20:06:53
@PaulP,從prod limit 10中選擇link_rewrite給你什麼?如果是這樣的話,那麼我的猜測是你在表中有'null'值(不管你有多少行)。 – Eric 2012-01-04 20:08:54