【问题标题】:Pass Datatable from C# to Oracle Stored procedure将 Datatable 从 C# 传递到 Oracle 存储过程
【发布时间】:2011-07-29 16:44:06
【问题描述】:

如何将数据表或数据集从 C# 传递到 Oracle 中的存储过程

【问题讨论】:

  • 我认为我们不能将 DataTable 或 DataSet 传递给 oracle。

标签: c# oracle11g


【解决方案1】:

你不能直接。但是有几种方法:

  • 将您的数据表/数据集转换为单个 XML 字符串或 blob,并将其用作存储过程的参数。

  • 使用临时表来存储您的数据表/数据集内容,以便存储过程可以处理它们。

【讨论】:

  • 嗨,拉里,您对您的答案有任何引用吗?我还希望将 xml 字符串发送到 sp 并对其进行分页...如果是,请感谢
  • 在我的存储过程中,包含 Xml 字符串的参数被键入为 CLOB。在 ADO.NET 方面,我使用序列化并使用字符串调用存储过程。 “分页”是什么意思?
【解决方案2】:

如果您有要插入 ORACLE 的数据集或数据表,则可以创建 ORACLE 数据适配器。然后创建一个用于插入的命令对象,并将 CommandType 设置为 StoredProcedure。然后您可以使用数据适配器的更新命令,并将数据集或数据表作为参数。

类似这样的:

OracleCommand cmdOra = new OracleCommand(StoredProcedureName, Connection);
cmdOra.CommandType = CommandType.StoredProcedure;
OracleDataAdapter da = new OracleDataAdapter();

da.InsertCommand = cmdOra;
da.Update(dsDataSet);

【讨论】:

    【解决方案3】:

    不确定您要完全做什么,尽管在 Oracle 中使用 Ref Cusors 可能对您可能正在做的任何事情有所帮助。 PL/SQL REF CURSOR and OracleRefCursor

    完成向 Oracle 传递大量数据的另一种方法是通过数组绑定:Put Your Arrays in a Bind

    【讨论】:

      猜你喜欢
      • 2015-10-31
      • 2014-08-10
      • 2011-11-16
      • 1970-01-01
      • 1970-01-01
      • 2012-09-24
      • 1970-01-01
      • 2016-06-14
      • 1970-01-01
      相关资源
      最近更新 更多