编写登陆用户表UserLoginInfo(UserID, UserName, Password),并充填记录,编写存储过程sp_checkAndGetUsrPwd,以用户名、登陆密码输入参数,同时将登录密码作为输出参数,如果用户名、登陆密码匹配,则返回状态码0,否则返回-1,同时将输出参数的值设置为真实的登录密码(假设用户名不重名),调用该存储过程后,输出对应的状态码和登录密码作为验证。
时间: 2023-12-08 22:03:05 浏览: 50
好的,可以使用如下 SQL 语句创建 `UserLoginInfo` 表:
```sql
CREATE TABLE UserLoginInfo (
UserID INT PRIMARY KEY,
UserName VARCHAR(50),
Password VARCHAR(50)
);
```
然后可以使用如下 SQL 语句向 `UserLoginInfo` 表中充填记录:
```sql
INSERT INTO UserLoginInfo (UserID, UserName, Password)
VALUES
(1, 'user1', 'pwd1'),
(2, 'user2', 'pwd2'),
(3, 'user3', 'pwd3');
```
接下来,可以使用如下 SQL 语句创建 `sp_checkAndGetUsrPwd` 存储过程:
```sql
CREATE PROCEDURE sp_checkAndGetUsrPwd
@UserName VARCHAR(50),
@LoginPwd VARCHAR(50) OUTPUT,
@Result INT OUTPUT
AS
BEGIN
SET NOCOUNT ON;
DECLARE @Pwd VARCHAR(50);
SELECT @Pwd = Password FROM UserLoginInfo WHERE UserName = @UserName;
IF @Pwd IS NULL
BEGIN
SET @Result = -1;
SET @LoginPwd = NULL;
END
ELSE IF @Pwd = @LoginPwd
BEGIN
SET @Result = 0;
SET @LoginPwd = @Pwd;
END
ELSE
BEGIN
SET @Result = -1;
SET @LoginPwd = NULL;
END
END;
```
该存储过程的输入参数为 `@UserName` 和 `@LoginPwd`,分别表示用户名和登录密码,输出参数为 `@LoginPwd` 和 `@Result`,分别表示真实的登录密码和状态码。存储过程的实现逻辑如下:
1. 根据输入的用户名查询 `UserLoginInfo` 表,获取对应的登录密码 `@Pwd`。
2. 如果查询结果为空,即该用户名不存在,将状态码设置为 -1,真实的登录密码设置为 NULL。
3. 如果查询结果不为空,但是查询到的登录密码与输入的登录密码不匹配,将状态码设置为 -1,真实的登录密码设置为 NULL。
4. 如果查询结果不为空,且查询到的登录密码与输入的登录密码匹配,将状态码设置为 0,真实的登录密码设置为查询到的登录密码。
最后,可以使用如下 SQL 语句调用存储过程,并输出对应的状态码和登录密码:
```sql
DECLARE @LoginPwd VARCHAR(50);
DECLARE @Result INT;
EXECUTE sp_checkAndGetUsrPwd 'user1', 'pwd1', @LoginPwd OUTPUT, @Result OUTPUT;
SELECT @Result AS ResultCode, @LoginPwd AS LoginPwd;
```
其中,第一个参数为用户名,第二个参数为输入的登录密码,第三个参数 `@LoginPwd` 和第四个参数 `@Result` 分别为输出参数,调用存储过程后会将真实的登录密码和状态码赋值给这两个参数。执行结果中,`ResultCode` 表示状态码,`LoginPwd` 表示真实的登录密码。
相关推荐
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)