以下は、ユーザー名(入力)を持つユーザーがデータベースに存在するかどうかを確認するためのストアド プロシージャ(ルーチン)です。データベース内には、ユーザー名が「dev」のユーザーが既にいます。 ただし、以下のルーチンを実行すると、res = 1が返されました。これは -1であると予想していました。
このようにルーチンを呼び出しました。私が間違った方法で呼んでいる場合は、私も修正してください。私はMySQLルーチンに本当に慣れていません。
CALL usp_GetUserValidation ('dev', @ErrorCode)
ここにMySQL Routineのプロがいて、これについて教えてくれますか? よろしくお願いします:)
DELIMITER $$
CREATE PROCEDURE usp_GetUserValidation(IN `@Username` VARCHAR(255), OUT `@ErrorCode` INT)
LANGUAGE SQL
NOT DETERMINISTIC
CONTAINS SQL
SQL SECURITY DEFINER
COMMENT 'To validate user login'
BEGIN
IF EXISTS
(SELECT UserID
FROM mt_User
WHERE UserName = @Username)
THEN
SET @ErrorCode = -1;
ELSE
SET @ErrorCode = 1;
END IF;
SELECT @ErrorCode AS res;
END$$
DELIMITER ;