用.NET调用Oracle存储过程返回记录集

oracle的存储过程返回记录集,关键之处是要用游标。关于数据库的游标(cursor)大家肯定都接触不少,我们可以通过OPEN,FETCH,CLOSE操作控制游标进行各种方便的操作,这方面的例子我就不在重复了。

我们现在要介绍的是游标变量(cursor variable)。类似游标,游标变量也是指向一个查询结果集的当前行。不同的是,游标变量能为任何类型相似(type-compatible)的查询打开,而并不是绑定到某一个特定的查询。通过游标变量,你可以在数据库的数据提取中获得更多的方便。

首先是建立表:

CREATE TABLE LIHUAN.BILL_POINTS
(
POINTS_ID NUMBER(10,0) NOT NULL,
CUSTOMER_ID NUMBER(10,0) NOT NULL,
BILL_POINT_NO NUMBER(2,0) DEFAULT 1 NOT NULL,
CONSTRAINT PK_BILL_POINTS PRIMARY KEY (POINTS_ID)
)
/

其次,建PACKAGE

CREATE OR REPLACE PACKAGE LIHUAN.YY_PKG_BILL_POINT_NO/**//*取得用户的所有计费电序号*/
IS
TYPE T_CURSOR IS REF CURSOR;
PROCEDURE BILL_POINT_NO(P_CUSTOMER_ID BILL_POINTS.CUSTOMER_ID%TYPE,
Re_CURSOR OUT T_CURSOR);
END;
/

再次,建PACKAGE BODY

CREATE OR REPLACE PACKAGE BODY LIHUAN.YY_PKG_BILL_POINT_NO/**//*取得用户的所有计费电序号*/
IS
PROCEDURE BILL_POINT_NO(P_CUSTOMER_ID BILL_POINTS.CUSTOMER_ID%TYPE,
Re_CURSOR OUT T_CURSOR)
IS
V_CURSOR T_CURSOR;
BEGIN
 OPEN V_CURSOR FOR
select Bill_Point_No from BILL_POINTS where CUSTOMER_ID =P_CUSTOMER_ID;
Re_CURSOR := V_CURSOR;
END;
END;
/

时间: 2024-10-18 23:50:40

用.NET调用Oracle存储过程返回记录集的相关文章

C#调用ORACLE存储过程返回结果集及函数

oracle|存储过程|函数   ORACLE段:首先在ORACLE建立PACKAGE和PACKAGE BODY,将在这里面定义函数和存储过程返回结果集.1:建立PACKAGE:CREATE OR REPLACE package SCOTT.pk_wtistype mytype is ref cursor;procedure p_wt(mycs out mytype);function f_get(str in varchar2)return varchar2;end; /说明:其实PACKAG

oracle11g-vs2012调用oracle存储过程返回输出字符串的值的问题

问题描述 vs2012调用oracle存储过程返回输出字符串的值的问题 vs2012调用oracle存储过程返回输出字符串的值的问题,在plsql中执行存储过程是没有问题的,输出的字符串也有值,但在vs中取输出参数的值时,此字符串的值为null,但 如果输出为整数,则可以得到返回值. 解决方案 贴出你的代码看看.你的参数传的对不对 解决方案二: OracleConnection conn = new OracleConnection(connstr); conn.Open(); OracleCo

一个通过Oracle8i存储过程,返回记录集的程序包(存储过程)

oracle|程序|存储过程|记录集 提示:在Oracle8i中,如果需要通过存储过程返回结果集, 需要使用游标! CREATE OR REPLACE  PACKAGE BODY "SMS_PAY"."SMSMAINT"                                                                               IS  --功能描述:查询代理银行交易流水信息 writer: wang haibo 200

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

如果要得到返回值,需要用Command的方法. 首先说明,返回值有两种.一种是在存储过程中直接return一个值,就象C和VB的函数返回值那样:另一种是可以返回多个值,存储这些值的变量名称需要在调用参数中先行指定. 这个例子要处理多种参数,输入参数,输出参数,返回记录集以及一个直接返回值(够全了吧?) 存储过程如下: 复制代码 代码如下: use pubs GO -- 建立存储过程 create procedure sp_PubsTest -- 定义三个参数变量,注意第三个,特别标记是用于输出

一个通过Oracle8i存储过程返回记录集的程序包(存储过程)

提示:在Oracle8i中,如果需要通过存储过程返回结果集, 需要使用游标! CREATE OR REPLACE PACKAGE BODY "SMS_PAY"."SMSMAINT" IS --功能描述:查询代理银行交易流水信息 writer: wang haibo 2004-08-24 PROCEDURE GetAgtBankFlow(AreaCode in varchar2,KeyWord in varchar2,startTradeDate in varchar

Spring 调用ORACLE存储过程的结果集

oracle|存储过程 oracle 对于高级特性总是与众不同(我极力讨厌这一点,如果使用它的产品就要对这种产品进行特定的编程,这也是我从不看好weblogic之类的平台的原因),大对象存取一要定用它自己的LOB对象,所幸我还能通过LONG RAW来代替.以便能使程序不需要特定的编码.但对于存储过程(我是说返回结果集的存储过程),我还没有什么方法能用一个通用的程序来处理ORACLE.太多的教材或文章在讲存储过程的调用只是不负责任地简单执行一些涵数或无结果返回的存储过程,使大多数读者根本不知道到底

Oracle 存储过程返回结果集

oracle|存储过程 1.返回数组 (作者:enhydraboy(乱舞的浮尘) ) 在oracle后台创建一个程序包或者存储过程connect scott/tiger; CREATE OR REPLACE PACKAGE ado_callpkg ASTYPE eid IS TABLE of NUMBER(4) INDEX BY BINARY_INTEGER;TYPE ename IS TABLE of VARCHAR2(40) INDEX BY BINARY_INTEGER;PROCEDURE

Spring调用Oracle存储过程的结果集

oracle 对于高级特性总是与众不同(我极力讨厌这一点,如果使用它的产品就要对这种产品进行特定的编程,这也是我从不看好weblogic之类的平台的原因),大对象存取一要定用它自己的LOB对象,所幸我还能通过LONG RAW来代替.以便能使程序不需要特定的编码.但对于存储过程(我是说返回结果集的存储过程),我还没有什么方法能用一个通用的程序来处理ORACLE.太多的教材或文章在讲存储过程的调用只是不负责任地简单执行一些涵数或无结果返回的存储过程,使大多数读者根本不知道到底如何调用存储过程的结果集

asp.net调用oracle存储过程,返回数据集的问题????如何定义存储过程???

问题描述 TABLE1中有下列字段C1,C2,C3,C4,C5,C6,C7,C8,C9....我要在前台页面中显示上表中的C1,C2,C3,C4,C5,C6,C7,C8打算用DATASET,那么,在ORACLE中如何写上面的存储过程啊?????要用到selectC1,C2,C3,C4,C5,C6,C7,C8fromtable1wherec1='10001'语句 解决方案 解决方案二:建一个包,包内有一个存储过程,存储过程内生命一个游标open游标名selectC1,C2,C3,C4,C5,C6,