黑马程序员_存储过程知识点
存储过程举例如下:
create proc [dbo].[sp_UserLogin]
(
@User_Name VarChar(50),
@User_Password VarChar(50),
@User_LoginIP VarChar(50),
@User_ID Int OutPut,
@ErrNum Int OutPut,
@ErrMsg VarChar(200) OutPut
)
As
set nocount on BEGIN
---定义变量------------------------------------------------
Declare @Password VarChar(50)
Declare @Status TinyInt -----------------------------------------------------------
---初始变量------------------------------------------------
Set @ErrNum = 0
Set @ErrMsg = '' -----------------------------------------------------------
Select @User_ID = [User_ID], @PassWord = User_Password, @Status = [Status] From User_Info Where [User_Name] = @User_Name If @@RowCount = 0 Begin Set @ErrNum = 1 Set @ErrMsg = '您登录的账户不存在' Return End If @Password <> @User_Password Begin Set @ErrNum = 2 Set @ErrMsg = '密码错误' Return End If @Status = 0 Begin Set @ErrNum = 3 Set @ErrMsg = '您的账户已被锁定' Return End Update User_Detail Set User_LoginNum = IsNull(User_LoginNum, 0) + 1, User_LoginTime = GetDate(), User_LoginIP = @User_LoginIP Where [User_ID] = @User_ID
Return End
set nocount off
1、@@ROWCOUNT是返回受上一语句影响的行数
2、定义变量 Declare @Password VarChar(50) Declare @Status TinyInt
3、设置初始变量 Set @ErrNum = 0 Set @ErrMsg = ''
4、return表示终止存储过程的执行并返回结果;每一个begin都要有一个end来结尾;if和else等。
5、<>表示“不等于”,@@Error表示返回与@@ERROR 最近的语句错误码,局限于DML语句和select语句,如果执行他们出现错误,则返回一个不等于0的错误码,如果没有出错,则返回0。通常使用它来判断语句有没有执行成功。
6、用输出变量来输出消息结果,如不存在,不正确等。
7、IsNull(User_LoginNum, 0),IsNull()函数表示如果该变量为null值,则用0赋值。
8、获取存储过程中输出参数的值: 传入参数的时候,设置。。。例如~ parameters[0].Direction = ParameterDirection.Output; 执行完以后。。。获取。。例如~ Session["Business_Id"] = parameters[0].Value;
9、在执行sql语句时可以为输出参数或定义的变量赋值,如: Select @User_ID = [User_ID], @PassWord = User_Password, @Status = [Status] From User_Info Where [User_Name] = @User_Name
10、Begin Tran表示开启事务,Commit Tran表示提交事务,Rollback Tran表示回滚事务。变量定义,初始化变量和输出参数,可以定义在事务中也可以定义在as之后。可以使用Goto语句进行跳转,但要在最后设定跳转的断点处,如:Goto theEnd,theEnd:。。。
11、创建存储过程时,定义输入和输出变量时要用逗号“,”隔开,其他的任何语句都可以不加逗号,但是必须都是单独一行。 定义变量时,变量要加@符号,后跟数据类型,如何要求有长度,则紧跟小括号,里面是长度,最后加output还是input。如:@ErrMsg VarChar(200) OutPut
12、常用函数:If Exists(select ...from ...)表示是否有记录。