执行存储过程返回记录集报对象关闭时不允许操作

by 清泉 6. 十二月 2008 18:16

在存储过程的as语句后加上一句set nocount on就可以了

问题得以解决现总结如下:
要在每个Insert语句之前都加一句set nocount on 也就是在游标循环里面加一句
 
1。
set RecvSMsg=Server.CreateObject("ADODB.Recordset")
sql="Exec sp_GetDeliverMsg "&Replace(Session("MM_UserMSISDN"),"'","''")
RecvSMsg=conn.Execute(sql)

2。
set rsComm=Server.CreateObject("ADODB.Command")
set RecvSMsg=Server.CreateObject("ADODB.Recordset")
RecvSMsg.CursorLocation = 3
RecvSMsg.LockType = 3
RecvSMsg.CursorType = 3
conn.CursorLocation = 3
rsComm.ActiveConnection = conn
rsComm.CommandText = "dbo.sp_GetDeliverMsg"
rsComm.CommandType = 4
rsComm.CommandTimeout = 0
rsComm.Prepared = true
rsComm.Parameters.Append
rsComm.CreateParameter("@Destnation_id", 200, 1,11,Replace(Session("MM_UserMSISDN"),"'","''"))
set RecvSMsg=rsComm.Execute()
nCount=RecvSMsg.RecordCount 俩处均会报错

1。2。种方式均能够得到正确结果;方式2种的RecvSMsg.CursorLocation = 3似乎可有可无 如果注释掉conn.CursorLocation=3和RecvSMsg.CursorLocation = 3则报以下错 Microsoft OLE DB Provider for SQL Server 错误 '80040e21' 多步 OLE DB 操作产生错误。如果可能,请检查每个 OLE DB 状态值。没有工作被完成。 conn.CursorLocation=3和RecvSMsg.CursorLocation = 3可以只取其一 set RecvSMsg=rsComm.Execute()和RecvSMsg.open rsComm,, 3, 1方式均可

Tags:

数据库相关

添加评论



(将显示你的Gravatar头像)  

biuquote
微笑得意调皮害羞酷大笑惊讶发呆喜欢可怜尴尬闭嘴噘嘴皱眉伤心抓狂呕吐坏笑漫骂发怒
Loading



Supidea.com 晨飞的梦 @ All Rights Reserved. Powered by BlogYi.NET ver:1.8.0.0. 苏ICP备09011404号

关于博主

kamau
抱着美好的理想背井离乡,这酸甜苦辣只能默默忍受。既然选择了路,就得风雨兼程……

Calendar

<<  五月 2012  >>
30123456
78910111213
14151617181920
21222324252627
28293031123
45678910

在日历中查看文章

最近的评论

Comment RSS

声明

      本博所发一切破解相关附件只作学习研究交流之用,严禁用于商业用途,请在下载24小时内删除。
      本博所有网友评论不代表本博立场,版权归其作者所有。

© Copyright 2009