Передача DataTable в процедуру в Oracle

1

Мне нужно передать DataTable в качестве параметра хранимой процедуры в базе данных Oracle.

Поскольку я использовал SQLDbType.Structured для передачи DataTable в SQLServe, но я не нашел Structured type в OracleDbType. Какой DataType я могу использовать для передачи DataTable в процедуру Oracle в качестве параметра?

Теги:

1 ответ

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);
  • 0
    Мне нужно передать DataTable из c# в procedure в oracle . Как это сделать?
  • 0
    Вы бы вызывали процедуру в своем коде C# , не так ли? Просто позвоните в PACKAGE.PROCURE(INPUT) . В ответе выше, это будет PKG_TEST.P_TEST(your datatable)
Показать ещё 12 комментариев

Ещё вопросы

Сообщество Overcoder
Наверх
Меню