データベースでログイン認証を行っStored Procedures
ていMySQL
ます。以下はコードですが、私が書いたものですが、動作しません。何が悪いのか教えてください。
以下の質問があります
- かどうかを確認する
CURSOR
方法empty
null
- 方法はありますか、手順を書きます。
私がしていること..
input
の 2 つのパラメーターと 2つのパラメーターを取りますouput
。ユーザーまたはパスワードが有効でないかどうかを確認し、それらの値を OUT パラメータに保存しました
SELECT 'Invalid username and password', 'null' INTO oMessage, oUserID;
ユーザーとパスワードが有効であるが、
isActive
列が次の0
場合SELECT 'Inactive account', 'null' INTO oMessage, oUserID;
成功すれば、
SELECT 'Success', v_UserID INTO oMessage, oUserID;
SQL コード
DELIMITER $$
USE `acl`$$
CREATE
DEFINER = `FreeUser`@`localhost`
PROCEDURE `acl`.`checkAuthenticationTwo`(
IN iUsername VARCHAR(50),
IN iPassword VARCHAR(50),
OUT oMessage VARCHAR(50),
OUT oUserID INT
)
BEGIN
DECLARE v_isActive INT;
DECLARE v_UserID INT;
DECLARE v_count INT;
DECLARE cur1 CURSOR FOR SELECT UserID, IsActive FROM m_users WHERE (LoginName = TRIM(iUsername) OR Email = TRIM(iUsername)) AND `Password` = iPassword;
OPEN cur1;
SET v_count = (SELECT FOUND_ROWS());
IF (v_count > 0)
FETCH cur1 INTO v_UserID, v_isActive;
IF (v_isActive = 0) THEN
SELECT 'Inactive account', 'null' INTO oMessage, oUserID;
ELSE
SELECT 'Success', v_UserID INTO oMessage, oUserID;
END IF;
ELSE
SELECT 'Invalid username and password', 'null' INTO oMessage, oUserID;
END IF;
END$$
DELIMITER ;