当前位置: 首页 > 图文教程 > 网络编程 > ASP > 为什么在存储过程中用OLEDB方式不能返回记录集

ASP
深入研究Application和Session对象(2)
深入研究Application和Session对象(3)
开始 .Net的旅程(一)
开始 .Net的旅程(二)
手把手教你使用VB来创建ASP组件(1)
手把手教你使用VB来创建ASP组件(2)
手把手教你使用VB来创建ASP组件(3)
手把手教你使用VB来创建ASP组件(4)
手把手教你使用VB来创建ASP组件(5)
手把手教你使用VB来创建ASP组件(6)
手把手教你使用VB来创建ASP组件(7)
手把手教你使用Java来编写ASP组件(1)
手把手教你使用Java来编写ASP组件(2)
手把手教你使用Java来编写ASP组件(3)
手把手教你使用Java来编写ASP组件(4)
手把手教你使用Java来编写ASP组件(5)
手把手教你使用Java来编写ASP组件(6)
ASP 3.0高级编程(二十四)
ASP 3.0高级编程(二十五)
ASP 3.0高级编程(二十六)

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


出处:互联网   整理: 软晨网(RuanChen.com)   发布: 2009-09-13   浏览: 148 ::
收藏到网摘: n/a

为什么在存储过程中用OLEDB方式不能返回记录集?
我曾写过一段程序,是对临时表操作的(主要功能是取出每种分类的TOP10条记录)。
该存储过程使用ODBC连接数据库时正常,能够得到正确的结果。但在使用oledb方式连接时,却不能返回记录集,而一旦操作返回记录集时就出现错误提示:
ADODB.Recordset 错误 '800a0e78'
The operation requested by the application is not allowed if the object is closed.
令我百思不得其解。这是为什么?
这是因为OLEDB与ODBC存在着一个差别,就是,当ASP向ODBC取记录集时,ODBC过滤了由create table
或insert into产生一些只占位置但不能进行任何操作的记录集,而当ASP向OLEDB取记录集时,OLEDB并
没有将这些记录集过滤掉。所以,我们应在存储过程中不希望返回记录集前就执行set nocount on,
禁止存储过程返回记录集;而要返回记录集时,就要先执行set nocount off。这样,问题就会解决了。