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 光标的主要内容,如果未能解决你的问题,请参考以下文章