将DataTable传递给Oracle中的过程

时间:2014-10-01 07:48:26

标签: c# oracle

我需要将DataTable作为参数传递给Oracle数据库中的存储过程。

我正在使用SQLDbType.StructuredDataTable传递给SQLServe,但我在Structured中找不到OracleDbType类型。我可以使用哪种DataType将DataTable作为参数传递给Oracle过程?

1 个答案:

答案 0 :(得分:0)

以下是一个示例,我将Associative array传递给过程:

SQL> CREATE OR REPLACE
  2  PACKAGE pkg_test
  3  IS
  4  TYPE typ
  5  IS
  6    TABLE OF VARCHAR2(50) INDEX BY BINARY_INTEGER;
  7    PROCEDURE P_TEST(
  8        DATASET TYP);
  9  END pkg_test;
 10  /

Package created.

SQL>
SQL> CREATE OR REPLACE
  2  PACKAGE BODY pkg_test
  3  IS
  4  PROCEDURE P_TEST(
  5      DATASET TYP)
  6  IS
  7  BEGIN
  8    FOR i IN 1..dataset.count
  9    LOOP
 10      dbms_output.put_line(dataset(i));
 11    END LOOP;
 12  END P_TEST;
 13  END pkg_test;
 14  /

Package body created.

SQL>
SQL> DECLARE
  2    var_typ pkg_test.typ;
  3  BEGIN
  4    VAR_TYP(1) := 'Procedure P_TEST test';
  5    VAR_TYP(2) := 'Another test for procedure P_TEST';
  6    pkg_test.p_test(var_typ);
  7  END;
  8  /
Procedure P_TEST test
Another test for procedure P_TEST

PL/SQL procedure successfully completed.

更新:进行了一些搜索,找到了C#代码,不确定,但我希望它能提供帮助。

也许你可以这样做:

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

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