在C#的System.Data.DbType枚举中,Oracle RefCursor类型的等效项是什么?

3

我正在使用Microsoft Enterprise Library编写DataAccess代码,并连接到Oracle数据库。当我尝试调用期望一个类型为RefCursor的输出参数的存储过程时,由于"System.Data.DbType"中仅有可用的类型是这些类型,我无法传递此类型。 那么我应该为Oracle的"RefCursor" DbType选择哪种类型?

2个回答

3

我尝试使用以下代码获取存储过程: DbCommand command = oracleDB.GetStoredProcCommand("SP_NAME", null); 但是在这一行中出现了一个“null reference”异常! 这个存储过程只有一个参数,即游标...当然是输出参数! - magdy.roshdy
@magdy.roshdy 是的,它不适用于无参数的存储过程。我认为我们还没有找到比添加一个未被使用的虚拟参数更好的解决方法。 - Cade Roux
这个答案的大部分细节都隐藏在链接后面,如果链接失效,那么这个答案的价值就会大打折扣。最好将解决方案的相关部分包含在您的答案中。 - MT0

0

据我记得,在Oracle PLSQL端,您可以将sys_refcursor命名为“cur_OUT”,并只需在C#端使用cmd.ExecutorReader()检索结果,甚至无需在Enterprise Library Data Access块端声明cur_OUT参数。

以下是文档(我忘记了来源...):

这意味着您可以将引用游标命名为“cur_OUT”,数据访问应用程序块将为您绑定它;您不需要显式创建游标的输出参数。如果您的存储过程使用名称不是“cur_OUT”的游标,则必须为每个游标显式添加参数到命令中。同样,如果您的存储过程包含多个游标,则必须将每个游标参数显式添加到命令中。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接