高分求救:在存储过程中使用表变量,使用ADO读取记录集时出现问题?

tater 2003-12-02 10:35:22
存储过程:
CREATE PROCEDURE [dbo].[GetScYSC] @ETIM datetime,@STIM datetime,@FTIM datetime,@nnum float
AS
DECLARE @mTable TABLE(
mtr VARCHAR(50) NOT NULL,
Q1 INT NOT NULL,
Q2 INT NOT NULL,
Q3 INT NOT NULL,
Q4 INT NOT NULL,
Q5 INT NOT NULL,
TY TINYINT NOT NULL
)
INSERT INTO @mTable(mtr,TY,q1,q2,q3,q4,q5) select '石灰石',1,0,0,0,0,0
SELECT mtr,q1,q2,q3,q4,q5 FROM @mTable ORDER BY ty,mtr

ASP程序:
Call rs.Open("EXEC GetScYSC '2003-11-25','2003-10-26','2003-1-1',100")

错误提示:
ADODB.Recordset 错误 '800a0e78'

对象关闭时,操作不被允许。


在查询分析器里面执行EXEC GetScYSC '2003-11-25','2003-10-26','2003-1-1',100
能读取到记录集的,在ASP程序里面就出错了,但同样的存储过程,改成临时表也发生同样的错误,但从表中直接读取数据没有任何问题
...全文
73 点赞 收藏 9
写回复
9 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
DeltaCat 2003-12-02
你只给了错误提示,和一句代码,我只能凭这个判断了
回复
tater 2003-12-02
问题已经解决了

加set nocount on就可以了
否则ADO会把INSERT INTO影响的行数当作记录集处理,你可以试一下
rs.nextrecordset 就可以取到记录集
回复
tater 2003-12-02
alexzhang00(三角猫(sjcatsoft))
数据库连接已经打开的

在执行上面代码之前已经执行过另一个rs.open的,能成功的读取记录集的
Call rs.Open("EXEC GetScYZH '2003-11-25','2003-10-26','2003-1-1',100")
在存储过程GetScYZH 中是直接读取表里面记录的
回复
tater 2003-12-02
rs 已经定义过了的
Dim rs
Set rs=Server.CreateObject("ADODB.Recordset")
rs.ActiveConnection=conn
rs.CursorType=adOpenForwardOnly
rs.LockType=adLockReadOnly


记录有的,在查询分析器里面执行能看到有记录的,就是在ADO中读取不到记录
回复
DeltaCat 2003-12-02
按你的错误提示,是你的 DBCON 没连接才对啊
你在看一下
回复
shleo 2003-12-02
是不是没有适合的记录
回复
skyboy0720 2003-12-02
我想多半是没有
Set rs=Server.CreateObject("ADODB.Recordset" )吧!:+)
回复
tater 2003-12-02
数据库连接已经绑定了
rs.ActiveConnection=conn

使用数据库连接.Execute "EXEC GetScYSC '2003-11-25','2003-10-26','2003-1-1',100"也出现同样的问题


回复
DeltaCat 2003-12-02
你的 数据库连接连接呢?
rs.Open "EXEC GetScYSC '2003-11-25','2003-10-26','2003-1-1',100",数据库连接,3,2

或者

数据库连接.Execute "EXEC GetScYSC '2003-11-25','2003-10-26','2003-1-1',100"
回复
相关推荐
发帖
ASP
创建于2007-09-28

2.8w+

社区成员

ASP即Active Server Pages,是Microsoft公司开发的服务器端脚本环境。
申请成为版主
帖子事件
创建了帖子
2003-12-02 10:35
社区公告
暂无公告