无法从 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
好吧,折腾了好久,RowSize
和FetchSize
好像不靠谱!
问题是参数不正确地到达数据库(参数顺序!)
但是多亏了 this comment 它可以通过设置 cmd.BindByName = true;
来解决
我已经关注了这里的所有问题以及 .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
好吧,折腾了好久,RowSize
和FetchSize
好像不靠谱!
问题是参数不正确地到达数据库(参数顺序!)
但是多亏了 this comment 它可以通过设置 cmd.BindByName = true;