C# C和PlSql游标

C# C和PlSql游标,c#,.net,oracle,plsql,C#,.net,Oracle,Plsql,我有一个Pl/Sql过程签名,如下所示 类型1中的fooparam1,类型1中的param2,c OUT REF游标 这个存储过程在C中被调用。在C代码中,我用这个游标填充一个数据表。我想知道光标何时关闭 我应该在SP中关闭它吗?在代码中?或者,当我调用Dispose方法时,对象OracleRefCursor将关闭它,因为它没有close方法 谢谢 编辑:下面是我正在使用的一些代码示例 存储过程: create or replace procedure foo1(param1 IN type1,

我有一个Pl/Sql过程签名,如下所示

类型1中的fooparam1,类型1中的param2,c OUT REF游标

这个存储过程在C中被调用。在C代码中,我用这个游标填充一个数据表。我想知道光标何时关闭

我应该在SP中关闭它吗?在代码中?或者,当我调用Dispose方法时,对象OracleRefCursor将关闭它,因为它没有close方法

谢谢

编辑:下面是我正在使用的一些代码示例

存储过程:

create or replace procedure foo1(param1 IN type1, param2 IN type1, c OUT REF CURSOR)
IS
BEGIN
    OPEN c
    FOR
       SELECT x
       FROM table;
END;

create or replace procedure foo2(param3 IN type1, param4 IN type1, c OUT REF CURSOR)
IS
   temp type1 := param3;
   x type1;
BEGIN
   LOOP temp < param4
      foo1(temp, param4, c);
      FETCH c INTO x;
      temp := temp +1;
   END LOOP;
END;

谢谢

您不应该关闭游标,因为不会返回任何数据,您必须在c代码中关闭它。

您有使用c和plsql游标的示例吗?因为我最近发布了一个问题,没有人回答。你能给我看一些c样本吗?因为我在使用DataReader从游标读取数据时遇到问题。有很多DataAdapter示例,但没有DataReader示例。Thanx。我正在使用DataAdapter.Fill方法用光标填充DataTable。但如何填充呢?我使用OracleRefCursor对象来存储光标,但在这个对象上没有类似close方法的设置。看我的题目有一些关于它的探索