使用OLE DB和ADO调用返回记录集的Oracle存储过程
2007-05-13 12:32:00 来源:WEB开发网核心提示: 2.3 ADO和OLE DB的关系OLE DB是系统级编程接口,ADO是应用软件级编程接口,使用OLE DB和ADO调用返回记录集的Oracle存储过程(2),ADO是OLE DB的一个消费者,它提供了对OLE DB数据源应用级的访问功能,返回两个记录集,存储函数GetDept的返回值类型
2.3 ADO和OLE DB的关系
OLE DB是系统级编程接口,ADO是应用软件级编程接口。ADO是OLE DB的一个消费者,它提供了对OLE DB数据源应用级的访问功能。ADO为OLE DB提供了一个易于使用的应用级接口。ADO允许用户编写通过OLE DB提供者对数据库服务器中的数据进行访问和操作的应用程序。其主要的优点是易于使用、高速度、低内存和占用较少的磁盘空间。ADO和OLE DB的关系如图2所示:
3 Oracle中返回记录集的存储过程的定义
在Oracle存储过程中,通过定义类型为REF CURSOR(游标指针)的传出参数,可以返回记录集。OLE DB允许消费者执行带REF CURSOR类型参数的PL/SQL存储过程,或者执行返回REF CURSOR的存储函数。返回记录集的存储过程或函数必须定义在程序包里。包是Oracle数据库的一种对象,它可以将数据类型、存储过程、函数、变量和常量封装在一起。包在结构上分为包头和包体两部分,这两部分要分别建立。包头用来定义可被外部引用的元素;包体定义实际代码。使用程序包定义返回记录集的存储过程时,需要在包头中预定义自己的REF CURSOR类型。在程序包体中,存储过程或函数须使用预定义的游标类型。另外,在一个存储过程或函数中,可以定义多个REF CURSOR类型的参数以返回多个记录集。
以下以职工表emp为例,介绍如何定义返回记录集的Oracle存储过程,emp表的定义如下:
CREATE TABLE emp(
empno NUMBER(4) NOT NULL, --职工编号
ename VARCHAR2(10), --职工姓名
hiredate DATE, --雇佣日期
sal NUMBER(7,2), --工资
deptno NUMBER(2)); --所属部门编号
下面给出返回记录集的Oracle存储过程和存储函数的示例程序包头和包体,其中存储过程GetEmpRecords含有两个REF CURSOR类型的传出参数,返回两个记录集,存储函数GetDept的返回值类型为REF CURSOR,返回一个记录集。
更多精彩
赞助商链接