我正在使用Microsoft Enterprise Library编写DataAccess代码,并连接到Oracle数据库。当我尝试调用期望一个类型为RefCursor的输出参数的存储过程时,由于"System.Data.DbType"中仅有可用的类型是这些类型,我无法传递此类型。 那么我应该为Oracle的"RefCursor" DbType选择哪种类型?
我正在使用Microsoft Enterprise Library编写DataAccess代码,并连接到Oracle数据库。当我尝试调用期望一个类型为RefCursor的输出参数的存储过程时,由于"System.Data.DbType"中仅有可用的类型是这些类型,我无法传递此类型。 那么我应该为Oracle的"RefCursor" DbType选择哪种类型?
在此处放置一个空占位符: http://tiredblogger.wordpress.com/2007/08/27/enterprise-library-and-oracle-stored-procedure-record-sets/
您必须使用参数数组列表,不能使用AddParameter。
据我记得,在Oracle PLSQL端,您可以将sys_refcursor命名为“cur_OUT”,并只需在C#端使用cmd.ExecutorReader()检索结果,甚至无需在Enterprise Library Data Access块端声明cur_OUT参数。
以下是文档(我忘记了来源...):
这意味着您可以将引用游标命名为“cur_OUT”,数据访问应用程序块将为您绑定它;您不需要显式创建游标的输出参数。如果您的存储过程使用名称不是“cur_OUT”的游标,则必须为每个游标显式添加参数到命令中。同样,如果您的存储过程包含多个游标,则必须将每个游标参数显式添加到命令中。
DbCommand command = oracleDB.GetStoredProcCommand("SP_NAME", null);
但是在这一行中出现了一个“null reference”异常! 这个存储过程只有一个参数,即游标...当然是输出参数! - magdy.roshdy