2

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 ;
4

2 に答える 2