C#-OracleCommandBuilder从存储的进程返回refcursor生成插入命令

C#-OracleCommandBuilder从存储的进程返回refcursor生成插入命令,c#,stored-procedures,command,builder,sys-refcursor,C#,Stored Procedures,Command,Builder,Sys Refcursor,CommandBuilder是一个非常方便的类,可以帮助我们避免编写插入、更新和删除命令。当CommandType为Text时,它可以非常轻松地执行此操作。但是当CommandType为StoredProcedure并且过程返回一个SYS\u refcus时,或者它无法生成SQL。我尝试使用sotred过程从Oracle数据库检索数据。选择很容易。(我将输出参数(在本例中是游标返回的参数)分配给IDataReader)。CommandBuild是否仍然可以使用返回游标的存储过程生成更新SQL?或

CommandBuilder是一个非常方便的类,可以帮助我们避免编写插入、更新和删除命令。当CommandType为Text时,它可以非常轻松地执行此操作。但是当CommandType为StoredProcedure并且过程返回一个SYS\u refcus时,或者它无法生成SQL。我尝试使用sotred过程从Oracle数据库检索数据。选择很容易。(我将输出参数(在本例中是游标返回的参数)分配给IDataReader)。CommandBuild是否仍然可以使用返回游标的存储过程生成更新SQL?或者我必须手动编写所有这些SQL。(我多么怀念MS SQL Server,因为它能够通过存储过程返回结果。)

经过长时间毫无希望的搜索,我从最权威的来源找到了问题的答案:ORACLE

以下是ODP.NET文档的注释:

无法更新引用游标类型。但是,检索到数据集中的数据 可以更新因此,OracleDataAdapter类需要自定义SQL 语句将任何引用游标数据更新刷新到数据库。 OracleCommandBuilder对象不能用于为生成SQL语句 参考光标更新


我认为最后一句话正是我问题的正确答案。希望这会对某人有所帮助。

您考虑过ORM吗?对于c#和oracle,一个免费的解决方案是odp.net和oracle client 11.2.0.3或更高版本。您注意到web.config或app.config中的返回类型了吗?下面的帖子可能会有所帮助。