【发布时间】:2012-05-26 04:36:03
【问题描述】:
我有一个像这样的(简化的)Oracle SQL:
declare
xd number;
xm number;
DataOut sys_refcursor;
begin
xd := to_number(to_char(sysdate, 'dd'));
xm := to_number(to_char(sysdate, 'mm'));
open DataOut for
select * from dual;
end;
并且我希望能够从 DataOut 参数中返回的数据中填充 .Net 中的 DataTable。
我一直在尝试各种方法,但似乎无法访问 DataOut 游标。 这个怎么称呼?
OracleCommand c = new OracleCommand();
c.CommandType = CommandType.Text;
c.CommandText = SQL;
OracleParameter param = new OracleParameter();
param.Direction = ParameterDirection.Output;
param.OracleType = OracleType.Cursor;
param.ParameterName = "DataOut";
c.Parameters.Add(param);
c.Connection = (OracleConnection) this.GetConnection();
OracleString rowNum = "";
c.ExecuteOracleNonQuery(out rowNum);
// or c.ExecuteReader()
// or use OracleDataAdapter
DataTable returnTable = /* magic goes here */
我可以编辑 SQL,但不能创建函数或过程。 这可能吗?
【问题讨论】:
-
您是否过于简化了您的示例?你知道 PL/SQL 块没有返回任何东西吗?
-
好吧,我不是 Oracle 人员,但我的客户将此示例发送给我,并告诉我应该能够从 DataOut 变量中获取数据。
-
我可以将其更改为返回值吗?我该怎么做?谢谢 :) 我真的迷路了!
标签: c# .net oracle plsql sys-refcursor