为什么在存储过程中用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
随机推荐
- js实现textarea限制输入字数
- win2003下创建永远的隐藏帐户的图文教程
- Java 中 synchronized的用法详解(四种用法)
- asp.net 独立Discuz头像编辑模块分离打包
- ubuntu16.04下vim安装失败的原因分析及解决方案
- python批量导出导入MySQL用户的方法
- C#简单访问SQLite数据库的方法(安装,连接,查询等)
- 表头固定(利用jquery实现原理介绍)
- Android Call(打电话)的基本知识详解
- c#调用c++方法介绍,window api
- DOS命令行窗口mysql中文显示乱码问题解决方法
- Android手势操作简单实例讲解
- Android手机号码归属地的查询
- C#操作INI文件的辅助类IniHelper
- 利用jsonp解决js读取本地json跨域的问题
- Django框架文件上传与自定义图片上传路径、上传文件名操作分析
- Python之NumPy(axis=0 与axis=1)区分详解
- github上的java项目怎么运行(面向小白)
- python模拟鼠标点击和键盘输入的操作
- Java 多个异常共享同一个异常处理器的方法