SELECT * FROM @t 使用SQLSERVER存储过程可以很大的提高程序运行速度,简化编程维护难度,现已得到广泛应用。 创建存储过程 和数据表一样,在使用之前需要创建存储过程,它的简明语法是:
引用: Create PROC 存储过程名称 [参数列表(多个以“,”分隔)] AS SQL 语句
例:
引用: Create PROC upGetUserName @intUserId INT, @ostrUserName NVARCHAR(20) OUTPUT -- 要输出的参数 AS BEGIN -- 将uName的值赋给 @ostrUserName 变量,即要输出的参数 Select @ostrUserName=uName FROM uUser Where uId=@intUserId END
引用: Create PROC upUserLogin @strLoginName NVARCHAR(20), @strLoginPwd NVARCHAR(20), @blnReturn BIT OUTPUT AS -- 定义一个临时用来保存密码的变量 DECLARE @strPwd NVARCHAR(20) BEGIN -- 从表中查询当前用户的密码,赋值给 @strPwd 变量,下面要对他进行比较 Select @strPwd=uLoginPwd FROM uUser Where uLoginName=@strLoginName
IF @strLoginPwd = @strPwd BEGIN SET @blnReturn = 1 -- 更新用户最后登录时间 Update uUser SET uLastLogin=GETDATE() Where uLoginName=@strLoginName END ELSE SET @blnReturn = 0 END
’// 判断是否登录成功 If .Parameters.Item("@blnReturn").Value = 1 Then Response.Write "恭喜你,登录成功!" Else Response.Write "不是吧,好像错了哦。。。" End If End With ’// 释放对象 Set adoComm = Nothing
引用: Create PROC upGetUserInfos @intUserGroup INT AS BEGIN -- 从数据库中抽取符合条件的数据 Select uName,uGroup,uLastLogin FROM uUser Where uGroup=@intUserGroup -- 插入一列合计 UNION Select ’合计人数:’,COUNT(uGroup),NULL FROM uUser Where uGroup=@intUserGroup END
现在我们来看一下ASP程序的调用。
引用: Dim adoComm Dim adoRt ’// 创建一个对象,我们用来调用存储过程 Set adoComm = CreateObject("ADODB.Command") Set adoRs = CreateObject("ADODB.Recordset") With adoComm ’// 设置连接,设 adoConn 为已经连接的 ADODB.Connection 对象 .ActiveConnection = adoConn ’// 类型为存储过程,adCmdStoredProc = 4 .CommandType = 4 ’// 存储过程名称 .CommandText = "upGetUserInfos" ’// 设置用户组 .Parameters.Item("@intUserGroup").Value = 1 ’// 执行存储过程,和以上几个例子不同,这里使用RecordSet的Open方法 adoRs.Open adoComm ’// 显示第一个值 Response.write adoRs.Fields(0).Value End With ’// 释放对象 Set adoRs = Nothing Set adoComm = Nothing