我需要将DataTable
作为参数传递给Oracle
数据库中的存储过程。
我正在使用SQLDbType.Structured
将DataTable
传递给SQLServe
,但我在Structured
中找不到OracleDbType
类型。我可以使用哪种DataType将DataTable
作为参数传递给Oracle过程?
答案 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);