C# 和 PlSql 光标

Posted

技术标签:

【中文标题】C# 和 PlSql 光标【英文标题】:C# and PlSql Cursor 【发布时间】:2010-01-13 13:32:21 【问题描述】:

我有一个像这样的 Pl/Sql 过程签名

foo(param1 IN type1, param2 IN type1, c OUT REF CURSOR).

这个存储过程在 C# 中被调用。在 C# 代码中,我用这个光标填充了一个 DataTable。我想知道光标什么时候关闭。

我应该在 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# 和 plsql 游标的例子吗?因为我最近发布了问题,没有人回答 你能给我看一些c#示例吗?因为我在使用 DataReader 从 Cursor 读取时遇到问题。 DataAdapter 有很多示例,但 DataReader 没有。提前致谢。 我正在使用 DataAdapter.Fill() 方法用光标填充 DataTable。 【参考方案1】:

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

【讨论】:

但是怎么做呢?我使用 OracleRefCursor 对象来存储游标,但在该对象上没有 close 方法。只有一个 dipose()。 查看我的话题有一些关于它的探索***.com/questions/2037000/c-and-postgresql

以上是关于C# 和 PlSql 光标的主要内容,如果未能解决你的问题,请参考以下文章

PLSQL“错误光标已打开”

day70-oracle PLSQL_02光标

从 Plsql 中的光标获取 Clob 值

通过直接 sql 的 plsql 光标

SQL记录-PLSQL游标

c# 动态获取当前屏幕中光标所在位置