为什么在存储过程中用OLEDB方式不能返回记录集
为什么在存储过程中用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。这样,问题就会解决了。
相关推荐
-
为什么在存储过程中用OLEDB方式不能返回记录集
为什么在存储过程中用OLEDB方式不能返回记录集?我曾写过一段程序,是对临时表操作的(主要功能是取出每种分类的TOP10条记录).该存储过程使用ODBC连接数据库时正常,能够得到正确的结果.但在使用oledb方式连接时,却不能返回记录集,而一旦操作返回记录集时就出现错误提示:ADODB.Recordset 错误 '800a0e78' The operation requested by the application is not allowed if the object is closed.
-
asp sqlserver 执行存储过程返回记录集报对象关闭时不允许操作
如果要得到返回值,需要用Command的方法. 首先说明,返回值有两种.一种是在存储过程中直接return一个值,就象C和VB的函数返回值那样:另一种是可以返回多个值,存储这些值的变量名称需要在调用参数中先行指定. 这个例子要处理多种参数,输入参数,输出参数,返回记录集以及一个直接返回值(够全了吧?) 存储过程如下: 复制代码 代码如下: use pubs GO -- 建立存储过程 create procedure sp_PubsTest -- 定义三个参数变量,注意第三个,特别标记是用于输出
-
VB返回记录集结果到HTML表格的方法
本文实例讲述了VB返回记录集结果到HTML表格的方法.分享给大家供大家参考.具体实现方法如下: function ReturnHTMLTable(query) set rs = cn.Execute(query) rs.MoveFirst response.Write "<table class=""data"" cols=""" & rs.Fields.Count & """
-
Oracle中返回结果集的存储过程分享
Oracle不像SQLServer那样在存储过程中用Select就可以返回结果集,而是通过Out型的参数进行结果集返回的.实际上是利用REF CURSOR 复制代码 代码如下: --procedure返回记录集: ----------------------声明一个Package-------------- CREATE OR REPLACE PACKAGE pkg_test AS TYPEmyrctypeIS REF CURSOR; PROCEDURE get_r(p_id NUMBER,p_
-
存储过程的输出参数,返回值与结果集
每个存储过程都有默认的返回值,默认值为0.下面我们分别看看在management studio中如何查看输出参数,返回值以及结果集,然后我们再在ASP.NET调用存储过程中如何获得输出参数,返回值以及结果集. 首先:在sql server management studio中查看输出参数,返回值以及结果集.本示例以Northwind数据库为例. 复制代码 代码如下: create proc Employee @Rowcount int=0 output as begin SELECT * FRO
-
js基于cookie方式记住返回页面用法示例
本文实例讲述了js基于cookie方式记住返回页面的用法.分享给大家供大家参考,具体如下: 首先明确以下概念 ①. 同名的 cookie,不同的 domain 或不同的 path,属不同的 cookie: 同名的 cookie,相同的 domain 且相同的 path,不同的 expires,属同一个 cookie. ②. 不加过期时间的cookie在浏览器关闭后失效 ③ 二级域名cookie可以生效,通过指定domain 于是在js端 document.cookie="back_url=&qu
-
mybatis调用sqlserver存储过程返回结果集的方法
第一种:返回值通过out输出 sqlserver存储 testMapper.xml 两种都能接收到数据的, 因为我的实体类字段与数据库的不一致,上面图片是按照数据库字段定义的,下图是按照实体类定义的,接收输出参数是按照你定义的名称返回 serviceImpl Map<String,String> objectsMap = new HashMap<>(); objectsMap.put("sno","123"); objectsMap.put(
-
关于C#中使用Oracle存储过程返回结果集的问题
问题: 在MSSQLServer中定义的存储过程可以直接返回一个数据集,如: create procedure sp_getAllEmployees as SELECT * FROM [NORTHWND].[dbo].[Employees] 在Oracle数据库中这样定义是错误的,怎么解决? 办法: Oracle中可以使用游标(Cursor)对数据集进行操作,但在存储过程输出参数中直接使用Cursor错误,此时的Cursor应该是一个定义游标的关键字并非类型,所以先要定义一个包,在包中声明全局的
-
mysql存储过程如何利用临时表返回结果集
目录 首先要声明的是 测试示例 真实需求,查找出所有用建单情况 首先要声明的是 1,游标的方法会很慢在mysql中,在oracle数据库中还可以,除非没有别的方法,一般不建议在mysql中使用游标, 2,不建议在mysql中拼接sql,会使存储过程显得很臃肿,可以使用or来动态判别传入的参数是否为空 and ( TTB.office_id=输入参数 or 输入参数 is null or 输入参数 = '') and ( TTB.office_id=IN_Office_id or IN_
-
C# DataSet查看返回结果集的实现
先看一段代码: private DataSet GetDataSet(string strsql) { string strcon = "server = 192.168.2.1,1433;uid = sa ; pwd = 123456 ; database = MyDB"; SqlConnection con = new SqlConnection(strcon); DataSet ds = new DataSet(); try { SqlDataAdapter DA = new S
随机推荐
- hta实现的定时重启或关闭计算机的小工具
- innerText 使用示例
- iOS实现类似格瓦拉电影的转场动画
- Zend Framework动作助手FlashMessenger用法详解
- 小型Drupal数据库备份以及大型站点MySQL备份策略分享
- MYSQL同步 Slave_IO_Running: No 或者Slave_SQL_Running: No的解决方法[已测]
- 用JS实现图片轮播效果代码(一)
- Ruby一行代码实现的快速排序
- sqlserver2008 拆分字符串
- asp.net下SQLite(轻量级最佳数据库) 原理分析和开发应用
- 删除极速隐藏软件技巧
- 将文件夹下所有文件输出到日志文件中 c#递归算法学习示例
- Java中的关键字_动力节点Java学院整理
- Android个人中心的头像上传,图片编码及截取实例
- 详解jQuery中基本的动画方法
- 解析Android开发优化之:对界面UI的优化详解(一)
- Java使用备忘录模式实现过关类游戏功能详解
- 安卓版微信跳一跳辅助 跳一跳辅助Java代码
- webpack dll打包重复问题优化的解决
- CSRF在ASP.NET Core中的处理方法详解