Oracle数据库返回cursor问题的解决方法(2)
这下我就明白了。在我的oracle函数中,我的名字 cur_Static_User 和默认的名字cur_OUT不匹配。
于是我就改了我的存储过程的参数名称,cur_Static_User改为 cur_OUT。
问题就解决了。
经过试验,也可以用如下方法用自己的参数名,而不用默认的参数名。
也可以,在一个PROCEDURE中返回多个 CURSOR
我的存储过程:
Procedure STATIC_USER_SelectAll
( cur_OUT_f OUT T_OUT, cur_OUT_g OUT T_OUT)
AS
Begin
OPEN cur_OUT_f FOR Select * from STATIC_USER;
OPEN cur_OUT_g FOR Select * from STATIC_ROLE;
End;
代码如下:
Database db = DatabaseFactory.CreateDatabase("oraserver");
string sqlCommand = "Static_UserPackage.STATIC_USER_SelectAll";
Microsoft.Practices.EnterpriseLibrary.Data.Oracle.OracleCommandWrapper dbCommandWrapper =(Microsoft.Practices.EnterpriseLibrary.Data.Oracle.OracleCommandWrapper)db.GetStoredProcCommandWrapper(sqlCommand);
dbCommandWrapper.AddParameter("cur_OUT_f", OracleType.Cursor, 0, ParameterDirection.Output, true, 0, 0, String.Empty, DataRowVersion.Default, Convert.DBNull);
dbCommandWrapper.AddParameter("cur_OUT_g", OracleType.Cursor, 0, ParameterDirection.Output, true, 0, 0, String.Empty, DataRowVersion.Default, Convert.DBNull);
DataSet dsCustomers = db.ExecuteDataSet(dbCommandWrapper);
DataGrid1.DataSource=dsCustomers.Tables[0];
DataGrid1.DataBind();
DataGrid2.DataSource=dsCustomers.Tables[1];
DataGrid2.DataBind();
相关新闻>>
- 发表评论
-
- 最新评论 更多>>