我已经关注了这里的所有问题以及.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
答案 0 :(得分:0)
好吧,经过一番大麻烦之后,RowSize
和FetchSize
似乎不可靠!
问题在于参数错误地到达了数据库(参数顺序!)
但是感谢this comment,可以通过设置cmd.BindByName = true;