SQL SERVER 联机丛书中的定义: 存储过程是保存起来的可以接受和返回用户提供的参数的 Transact-SQL 语句的集合。 可以创建一个过程供永久使用,或在一个会话中临时使用(局部临时过程),或在所有会话中临时使用(全局临时过程)。 也可以创建在 Microsoft SQL Server 启动时自动运行的存储过程。
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