Мне нужно передать DataTable
в качестве параметра хранимой процедуры в базе данных Oracle
.
Поскольку я использовал SQLDbType.Structured
для передачи DataTable
в SQLServe
, но я не нашел Structured
type в OracleDbType
. Какой DataType я могу использовать для передачи DataTable
в процедуру Oracle в качестве параметра?
Вот пример, я передаю 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);
DataTable
изc#
вprocedure
вoracle
. Как это сделать?C#
, не так ли? Просто позвоните вPACKAGE.PROCURE(INPUT)
. В ответе выше, это будетPKG_TEST.P_TEST(your datatable)