无法从OracleRefCursor填充DataTable

时间:2019-06-24 11:16:02

标签: c# oracle sys-refcursor

我已经关注了这里的所有问题以及.Net和Oracle文档,除了在这里获得帮助之外,别无他求!

我有一个返回SYS_REFCURSOR的过程

我设法把它当作极好的东西取回,但是很难弄清楚从光标处填充DataTable有什么问题

OracleCommand cmd = new OracleCommand();
cmd.CommandType = CommandType.StoredProcedure;
...
cmd.Parameters.Add("pView", OracleDbType.RefCursor).Direction = ParameterDirection.Output;
cmd.ExecuteNonQuery();

OracleRefCursor cursor = (OracleRefCursor)cmd.Parameters["pView"].Value;
// cursor.RowSize = 2540

OracleDataAdapter da = new OracleDataAdapter(cmd);
DataTable dt = new DataTable();
int rowsCount = da.Fill(dt, cursor);                     
// rowsCount = 0

1 个答案:

答案 0 :(得分:0)

好吧,经过一番大麻烦之后,RowSizeFetchSize似乎不可靠

问题在于参数错误地到达了数据库(参数顺序!)

但是感谢this comment,可以通过设置cmd.BindByName = true;

来解决