1
如何在mysql中的過程函數中檢查遊標是否返回任何東西?檢查遊標是否返回任何東西
是否有可能避免做IF (SELECT COUNT(*) FROM stock ...
,而是以某種方式檢查_cur
變量?
程序功能
DELIMITER $$
DROP FUNCTION IF EXISTS `stock_first_available_id` $$
CREATE DEFINER=`dynaccount`@`localhost` FUNCTION `stock_first_available_id`(_running_total_limit INT, _product_id INT, _group_id INT) RETURNS INT
BEGIN
DECLARE _running_count INT default 0;
DECLARE _id INT;
DECLARE _current_id INT;
DECLARE _sum_count INT;
DECLARE _cur CURSOR FOR SELECT id, count FROM stock WHERE group_id=_group_id && type=2 && product_id=_product_id ORDER BY time DESC, id DESC;
IF (SELECT COUNT(*) FROM stock WHERE group_id=_group_id && type=2 && product_id=_product_id) = 0 THEN
RETURN 0;
END IF;
OPEN _cur;
read_loop: LOOP
FETCH _cur INTO _id, _sum_count;
SET _running_count = _running_count + _sum_count;
SET _current_id = _id;
IF _running_count > _running_total_limit THEN
LEAVE read_loop;
END IF;
END LOOP read_loop;
CLOSE _cur;
RETURN _current_id;
END $$
DELIMITER ;
我不明白。遊標不「返回」任何東西。也許你可以擴展你的程序試圖做的事情。 – 2012-01-01 18:33:03
@clarkk我注意到20分鐘前我離開了光標:-)很高興看到你提出這個問題作爲一個新問題 - 提出一個新話題總是很好的。 – dash 2012-01-01 20:37:53
@dash,並感謝您的幫助..你剛剛介紹我的一個新的強大的工具:) – clarkk 2012-01-02 13:16:55