Oracle数据库返回cursor问题的解决方法(2)_Oracle数据库_黑客防线网安服务器维护基地--Powered by WWW.RONGSEN.COM.CN

Oracle数据库返回cursor问题的解决方法(2)

作者:黑客防线网安Oracle维护基地 来源:黑客防线网安Oracle维护基地 浏览次数:0

黑客防线网安网讯:   with a name other than "cur_OUT," you must explicitly add a parameter for each cursor to the command. Similarly, if your stored procedure contains multiple cursors, you must...
   with a name other than "cur_OUT," you must explicitly add a parameter for each cursor to the command. Similarly, if your stored procedure contains multiple cursors, you must explicitly add each cursor parameter to the command.
这下我就明白了在我的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();
    黑客防线网安服务器维护方案本篇连接:http://www.rongsen.com.cn/show-13292-1.html
网站维护教程更新时间:2012-03-23 00:53:18  【打印此页】  【关闭
我要申请本站N点 | 黑客防线官网 |  
专业服务器维护及网站维护手工安全搭建环境,网站安全加固服务。黑客防线网安服务器维护基地招商进行中!QQ:29769479

footer  footer  footer  footer