【发布时间】:2011-07-29 16:44:06
【问题描述】:
如何将数据表或数据集从 C# 传递到 Oracle 中的存储过程
【问题讨论】:
-
我认为我们不能将 DataTable 或 DataSet 传递给 oracle。
如何将数据表或数据集从 C# 传递到 Oracle 中的存储过程
【问题讨论】:
你不能直接。但是有几种方法:
将您的数据表/数据集转换为单个 XML 字符串或 blob,并将其用作存储过程的参数。
使用临时表来存储您的数据表/数据集内容,以便存储过程可以处理它们。
【讨论】:
如果您有要插入 ORACLE 的数据集或数据表,则可以创建 ORACLE 数据适配器。然后创建一个用于插入的命令对象,并将 CommandType 设置为 StoredProcedure。然后您可以使用数据适配器的更新命令,并将数据集或数据表作为参数。
类似这样的:
OracleCommand cmdOra = new OracleCommand(StoredProcedureName, Connection);
cmdOra.CommandType = CommandType.StoredProcedure;
OracleDataAdapter da = new OracleDataAdapter();
da.InsertCommand = cmdOra;
da.Update(dsDataSet);
【讨论】:
不确定您要完全做什么,尽管在 Oracle 中使用 Ref Cusors 可能对您可能正在做的任何事情有所帮助。 PL/SQL REF CURSOR and OracleRefCursor
完成向 Oracle 传递大量数据的另一种方法是通过数组绑定:Put Your Arrays in a Bind
【讨论】: