我想傳入一個int值並獲取小於此int的短密碼列表。我在修改MySQL遊標示例時遇到問題:http://dev.mysql.com/doc/refman/5.0/en/cursors.html。我想用短密碼輸出行,但任何時候結果都有多行PhpMyAdmin只是無限期地顯示「處理請求」。我究竟做錯了什麼?它毀了我星期六的生產力!在存儲過程中打印出多行
DELIMITER $$
CREATE DEFINER=`root`@`localhost` PROCEDURE `ShortPasswd`(IN `passwordLength` TINYINT)
BEGIN
DECLARE done INT DEFAULT FALSE;
DECLARE a INT;
DECLARE b VARCHAR(255);
DECLARE cur1 CURSOR FOR SELECT UID, Password
FROM authentication WHERE CHARACTER_length(Password) < passwordLength;
DECLARE CONTINUE HANDLER FOR NOT FOUND SET done = TRUE;
OPEN cur1;
read_loop: LOOP
FETCH cur1 INTO a, b;
IF done THEN
LEAVE read_loop;
END IF;
SELECT b;
END LOOP;
CLOSE cur1;
END
$$
DELIMITER ;
這個答案只返回第一行。你知道如何返回所有行嗎? – Shane 2013-04-20 14:41:00
您是否測試過'SELECT UID,密碼 FROM認證WHERE CHARACTER_length(Password)> passwordLength;'在phpmyadmin中查詢結果? – 2013-04-20 14:43:49
是的(作爲一個側面說明,我在小於號中犯了一個錯誤,它應該是'CHARACTER_length(Password)
Shane
2013-04-20 14:49:15