最近在论坛上看见有人问在.NET中调用PL/SQL返回游标的问题。碰巧曾经遇倒过这样的问题。现在把大体的解决方法贴出来。为以后的应用提供一个参考:
//定义游标参数
OracleParameter outResult = new OracleParameter("prm_OutResult", OracleDbType.RefCursor, ParameterDirection.InputOutput);
//定义一个执行的SQL
command.CommandType = CommandType.Text;
command.CommandText = "BEGIN TestProcedure(:prm_OutResult); END;";
DataTable outTable = new DataTable();
//调用PL/SQL
command.ExecuteNonQuery();
//OUT参数取得
OracleRefCursor refCursor = (OracleRefCursor)outResult.Value;
//将参数读进一个DataTable
OracleDataAdapter adapter = new OracleDataAdapter(command);
adapter.Fill(outTable , refCursor);

得到的就是outTable 。
提醒一点,返回游标的事务和将游标数据读进DataTable的事务应该在一个事务里面。
本文介绍在.NET环境中如何调用PL/SQL并处理返回的游标,重点在于事务处理,确保游标数据加载到DataTable的操作与PL/SQL调用在同一事务内完成。

被折叠的 条评论
为什么被折叠?



