SQL Server一一使用存储过程

      存储过程是允许重复执行某个任务的SQL语句。只要创建某个过程一次,就可以在程序中多次重用它。提高了程序的可维护性,允许程序以统一 优化的方式访问数据库。

1. 创建数据库和表

前面我们讲述了如何创建数据库及表,接下来我们使用SQL语句在SQL2012Db数据库中创建一个UserLogin表,如下所示:

CREATE TABLE UserLogin
(
  CardId int IDENTITY(1,1), --Identity makes the column Not Null internally
  UserName varchar(10) Not Null, --Name value is a must and can't be Null
  LoginPwd varchar(10),
  LoginType int
)

添加数据:

use SQL2012Db
Go
Insert into UserLogin (UserName,LoginPwd,LoginType)
Values('Jack','111111',1),
('User','222222',0)
Go

然后我们利用select * from UserLogin查询一下,如下所示:

SQL Server一一使用存储过程_第1张图片

2. 创建存储过程

基本语法:

create procedure 存储过程名 
@参数1,
@参数2,
...
@参数N
as
begin
Transact SQL语句块;
End

根据上述建立的数据库表,我们希望通过创建存储过程实现如下功能:

通过登录界面输入UserName,Password及LoginType来实现账户登录,这个存储过程主要是比较数据库表中存储的信息与用户登录界面输入的信息做比对来完成登录是否成功。

存储过程创建:

Create proc [dbo].[proc_UserLogin]
	@p_User varchar(100), 
	@p_Password varchar(200),  
	@p_Type int
as  
declare @CardID   varchar(20),    @Name         varchar(50),
        @Password varchar(20)

  select @CardID = CardID, @Name = UserName,
         @Password = LoginPwd
  from UserLogin
  where ((@p_Type = 0 and CardID = @p_User) or (@p_Type = 1 and UserName = @p_User))

  if @@rowcount <= 0
  begin
    return -1;
  end

  if @Password != @p_Password
  begin
    return -2
  end

  select @CardID as CardID, @Name as Name, @Password as Password

  return 0 

实现如下所示:

SQL Server一一使用存储过程_第2张图片

3. 执行存储过程:

基本语法:

--执行
execute 存储过程名 
@参数1,
@参数2,
...
@参数N

SQL语句实现:

declare @return_value int

EXEC  @return_value = [dbo].[proc_UserLogin]
@p_User = 'Jack',
@p_Password = '111111',
@p_Type = 1

select 'return_value' = @return_value

点击执行/F5,得到结果如下:

SQL Server一一使用存储过程_第3张图片

4.C#实现上述过程

实现:https://download.csdn.net/download/xuanyin235/10959252

参考:https://blog.csdn.net/Eastmount/article/details/11576385

你可能感兴趣的:(SQL,Server)