MySQL IF ... THEN с последующим оператором запроса - PullRequest
0 голосов
/ 22 апреля 2011

Что-то вроде этого действительно в MySQL:

DELIMITER //
CREATE FUNCTION LOGIN_VALIDATE(IN uName VARCHAR(32),IN uPass VARCHAR(32))
RETURNS BOOLEAN
BEGIN
    DECLARE row_count BOOLEAN DEFAULT 0;
    DECLARE stored_pass VARCHAR(32) DEFAULT NULL;
    DECLARE valid_return BOOLEAN DEFAULT 0;
    SELECT count(*) INTO row_count FROM Login WHERE userId='uName';
    IF row_count = 1 THEN 
        SELECT pWord INTO stored_pass FROM Login WHERE userId='uName';
    END IF;
    IF stored_pass = 'uPass' THEN 
        SET valid_return = 1;
    END IF;
    RETURN valid_return;
END //
DELIMITER ;

1 Ответ

4 голосов
/ 22 апреля 2011

Использование:

DECLARE valid_return BOOLEAN DEFAULT 0;

SELECT CASE WHEN COUNT(*) = 1 THEN 1 ELSE 0 END
  INTO valid_return
  FROM LOGIN l
 WHERE l.userid = @uName
   AND l.pword = @uPass

Всегда старайтесь свести к минимуму количество проходов по столу, чтобы получить желаемый результат. SQL основан на SET, а не процедурный - SQL будет работать лучше для вас, если к нему правильно подойти.

...