asp 返回多个记录集的存储过程

返回多个记录集的存储进程
本文最先介绍的是返回记录集的存储进程。有时候,需要一个存储进程返回多个记录集,在ASP中,如何同时取得这些记录集呢?为了说明这一问题,在USERINFO表中增加两个字段:USERTEL及USERMAIL,并设定只有登录用户可以查看这两项内容。

/*SP7*/
CREATE PROCEDURE DBO.GETUSERINFO
@USERID INT,
@CHECKLOGIN BIT
AS
SET NOCOUNT ON
BEGIN
IF @USERID IS NULL OR @CHECKLOGIN IS NULL RETURN
SELECT USERNAME
FROM DBO.[USRINFO]
WHERE USERID=@USERID
--若为登录用户,取USERTEL及USERMAIL
IF @CHECKLOGIN=1
SELECT USERTEL,USERMAIL
FROM DBO.[USERINFO]
WHERE USERID=@USERID
RETURN
END
GO

以下是ASP代码:

'**调用返回多个记录集的存储进程**
DIM CHECKLG,USERID,USERNAME,USERTEL,USERMAIL
DIM MYCOMM,MYRST
USERID = 1
'CHECKLOGIN()为自定义函数,判断访问者是否登录
CHECKLG = CHECKLOGIN()
SET MYCOMM = SERVER.CREATEOBJECT("ADODB.COMMAND")
WITH MYCOMM
.ACTIVECONNECTION = MYCONSTR 'MYCONSTR是数据库连接字串
.COMMANDTEXT = "GETUSERINFO" '指定存储进程名
.COMMANDTYPE = 4 '表明这是一个存储进程
.PREPARED = TRUE '要求将SQL命令先行编译
.PARAMETERS.APPEND .CREATEPARAMETER("@USERID",3,1,4,USERID)
.PARAMETERS.APPEND .CREATEPARAMETER("@CHECKLOGIN",11,1,1,CHECKLG)
SET MYRST = .EXECUTE
END WITH
SET MYCOMM = NOTHING

'从第一个记录集中取值
USERNAME = MYRST(0)
'从第二个记录集中取值
IF NOT MYRST IS NOTHING THEN
SET MYRST = MYRST.NEXTRECORDSET()
USERTEL = MYRST(0)
USERMAIL = MYRST(1)
END IF
SET MYRST = NOTHING

以上代码中,利用RECORDSET对象的NEXTRECORDSET方法,取得了存储进程返回的多个记录集。

至此,针对ASP调用存储进程的各种情况,本文已做了较为全面的说明。最后说一下在一个ASP程序中,调用多个存储进程的不同方法。

时间: 2024-10-26 03:53:50

asp 返回多个记录集的存储过程的相关文章

返回多个记录集的存储过程-ASP调用存储过程

存储过程|记录集 本文最先介绍的是返回记录集的存储过程.有时候,需要一个存储过程返回多个记录集,在ASP中,如何同时取得这些记录集呢?为了说明这一问题,在userinfo表中增加两个字段:usertel及usermail,并设定只有登录用户可以查看这两项内容. /*SP7*/CREATE PROCEDURE dbo.getUserInfo@userid int,@checklogin bitasset nocount onbeginif @userid is null or @checklogi

asp 同时返回参数和记录集的存储过程

同时返回参数和记录集的存储进程 有时候,我们需要存储进程同时返回参数和记录集,比如在利用存储进程分页时,要同时返回记录集以及数据总量等参数.以下给出一个进行分页处理的存储进程: /*SP6*/ CREATE PROCEDURE DBO.GETUSERLIST @IPAGECOUNT INT OUTPUT, --总页数 @IPAGE INT, --当前页号 @IPAGESIZE INT --每页记录数 AS SET NOCOUNT ON BEGIN --创建临时表 CREATE TABLE #T

ASP调用带输入参数值及返回临时表记录集的存储过程

存储过程|记录集|临时表 存储过程编写注意事项:1.首先带有输入值,那么必须在存储过程声明一个输入值变量,如下代码: 以下是存储过程代码片段:ALTER  PROCEDURE 存储过程名 @year int '这行是定义输入的变量名 AS 2.由于是返回表,在存储过程开始AS部分部分必须加入set nocount on语句,如下代码: 以下是存储过程代码片段:ALTER  PROCEDURE HD_CK_XSHZ  @year int  AS set nocount on '调用临时表必须有些语

带返回记录集的存储过程-ASP调用存储过程

存储过程|记录集 假设有以下存储过程(本文的目的不在于讲述T-SQL语法,所以存储过程只给出代码,不作说明): /*SP1*/CREATE PROCEDURE dbo.getUserListasset nocount onbeginselect * from dbo.[userinfo]endgo 以上存储过程取得userinfo表中的所有记录,返回一个记录集.通过command对象调用该存储过程的ASP代码如下: '**通过Command对象调用存储过程**DIM MyComm,MyRstSe

ADO 调用存储过程返回多个记录集的问题(关于存储过程内Set NoCount On的作用)

  最近在 CSDN 上回答了好几个网友大致相同的问题 http://community.csdn.net/Expert/TopicView.asp?id=4131244 http://community.csdn.net/Expert/TopicView.asp?id=4156955 大致都是问:为什么没有返回数据集或将记录集赋给表格控件出错 产生问题的原因大致有几个 1.不清楚 ADO.Connection.Execute 的返回机制,所有使用该方法返回的记录集都是只读,仅向前游标的 所以赋

ASP中轻松实现记录集分页

分页|记录集|分页|记录集     大家都知道在Dreamwerver中可以很方便地实现记录集的分页显示,但是生成的代码的确很庞大,影响了网页的显示速度,看起来条理也不是很清晰,那么,可不可以用简单的方式实现同样的功能呢?当然可以,笔者通过以下一些简单的代码就实现了记录集的分页显示,现在拿出来大家一起分享. 主要代码如下: <% If rs1.recordcount>0 Then ' 记录集不为空则处理记录 rs1.pagesize = 10 ' 设置每页显示的记录数 num=rs1.reco

在ASP中轻松实现记录集分页显示

大家都知道在Dreamwerver中可以很方便地实现记录集的分页显示,但是生成的代码的确很庞大,影响了网页的显示速度,看起来条理也不是很清晰,那么,可不可以用简单的方式实现同样的功能呢?当然可以,笔者通过以下一些简单的代码就实现了记录集的分页显示,现在拿出来大家一起分享. 主要代码如下: <% If rs1.recordcount>0 Then ' 记录集不为空则处理记录 rs1.pagesize = 10 ' 设置每页显示的记录数 num=rs1.recordcount ' 记录总数 pag

Hibernate执行返回多个结果集的存储过程怎么接收????

问题描述 我在sqlserver2008数据库里创建pageSelect存储过程createprocedurepageSelect@sqlstrnvarchar(4000),--查询字符串@currentpageint,--第N页@pagesizeint--每页行数assetnocountondeclare@P1int,--P1是游标的id@rowcountintexecsp_cursoropen@P1output,@sqlstr,@scrollopt=1,@ccopt=1,@rowcount=

为什么在存储过程中用OLEDB方式不能返回记录集_ASP基础

为什么在存储过程中用OLEDB方式不能返回记录集?我曾写过一段程序,是对临时表操作的(主要功能是取出每种分类的TOP10条记录).该存储过程使用ODBC连接数据库时正常,能够得到正确的结果.但在使用oledb方式连接时,却不能返回记录集,而一旦操作返回记录集时就出现错误提示:ADODB.Recordset 错误 '800a0e78' The operation requested by the application is not allowed if the object is closed.