C # и PlSql Cursor - PullRequest
       21

C # и PlSql Cursor

0 голосов
/ 13 января 2010

У меня есть подпись процедуры Pl / Sql, которая выглядит следующим образом

foo(param1 IN type1, param2 IN type1, c OUT REF CURSOR).

Эта хранимая процедура вызывается в C #. В коде C # я заполняю таблицу данных этим курсором. Я хотел бы знать, когда курсор будет закрыт.

Должен ли я закрыть его в SP? В коде? Или объект OracleRefCursor закроет его, когда я вызову метод Dispose (потому что у него нет метода Close)?

Спасибо

Редактировать: Вот пример кода, который я использую

Сохраненный процесс:

create or replace procedure foo1(param1 IN type1, param2 IN type1, c OUT REF CURSOR)
IS
BEGIN
    OPEN c
    FOR
       SELECT x
       FROM table;
END;

create or replace procedure foo2(param3 IN type1, param4 IN type1, c OUT REF CURSOR)
IS
   temp type1 := param3;
   x type1;
BEGIN
   LOOP temp < param4
      foo1(temp, param4, c);
      FETCH c INTO x;
      temp := temp +1;
   END LOOP;
END;

Спасибо

1 Ответ

0 голосов
/ 13 января 2010

Вы не должны закрывать курсор, потому что никакие данные не будут возвращены, вы должны закрыть их в своем коде c #.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...