2
は、私は、二重このselect文をチェックし、それ間違い返す行いますステートメントに「WHERE」があると、ストアードプロシージャーで「データがありません - 行がフェッチ、選択、または処理されません」というエラーがスローされるのはなぜですか?
SELECT name, id FROM MyTable WHERE id > 3;
をしかし、私はカーソルのためにそれを行うとき、それはデータが取り込まれたと言います!
DROP PROCEDURE IF EXISTS Test;
DELIMITER //
CREATE PROCEDURE Test()
BEGIN
-- Our columns
DECLARE name VARCHAR(45);
DECLARE id INT DEFAULT -1;
-- Our cursor
DECLARE cur CURSOR FOR SELECT name, id FROM MyTable WHERE id > 3;
DROP TEMPORARY TABLE IF EXISTS TempTest;
CREATE TEMPORARY TABLE TempTest
(
name VARCHAR(45) NOT NULL,
id INT NOT NULL
);
-- Open our cursor
open cur;
-- Start our for loop
forLoop: LOOP
-- Get the row
FETCH cur INTO name, id;
INSERT INTO TempTest (name, id)
VALUES (name, id);
END LOOP forLoop;
-- Close the cursor
CLOSE cur;
-- NOW GET THE RESULTS
SELECT * FROM TempTest;
END; //
DELIMITER ;
CALL Test();
これは、エラーがスローされます:
[1329] No data - zero rows fetched, selected, or processed
ありがとうございました!それがまさに問題でした。 –