无法从 OracleRefCursor 填充 DataTable

Unable to fill DataTable from OracleRefCursor

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

我有一个程序 returns a SYS_REFCURSOR

我设法将它作为 outparam 检索出来,但是很难弄清楚从光标

填充 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

好吧,折腾了好久,RowSizeFetchSize好像不靠谱

问题是参数不正确地到达数据库(参数顺序!)

但是多亏了 this comment 它可以通过设置 cmd.BindByName = true;

来解决