Pl / Sql Открытый курсор внутри для цикла - PullRequest
0 голосов
/ 05 февраля 2020

Я создаю хранимую процедуру в Oracle Pl / Sql, сначала я должен создать двумерный массив с идентификаторами записей, которые соответствуют определенным критериям, я уже это делаю, затем я должен запросить через таблицу спецификаций c и получить данные идентификаторов моего «конечного массива».

Это часть SP, где il oop проходит через финальный массив и выполняет запрос к таблице.

FOR x IN array_final.FIRST .. array_final.LAST

LOOP
   OPEN voCursor FOR
   SELECT ID AS IDTRX FROM TBL_TRANSACTION WHERE ID in (array_final(x)(1));
   dbms_output.Put_line(x);
   totReg := x;


END LOOP;

дело в том, что курсор получает только последнюю запись.

Это код Java, где я получаю результаты из результатов.

enter image description here

, и это то, что консоль отображается 2 записи, но отображается только один идентификатор, последний

enter image description here

Как я могу поместить 2 записи в курсор внутри для л oop ?? Есть ли лучший способ выполнить это sh это?

Любая помощь приветствуется, Привет

1 Ответ

1 голос
/ 05 февраля 2020

Почему курсор? Я бы объявил переменную

l_idtrx remove.id%type;

remove

OPEN voCursor FOR

и просто

SELECT ID into l_idtrx FROM remove ...

[EDIT: это refcursor]] 1012 *

Вот краткий пример того, как вы можете это сделать. Как вы уже сделали большую часть этого, примените недостающие части.

SQL> create or replace function f_test
  2    return sys_refcursor
  3  is
  4    l_rc  sys_refcursor;
  5    l_arr sys.odcinumberlist := sys.odcinumberlist(10, 20, 30);
  6  begin
  7    open l_rc for
  8      select deptno, dname, loc
  9      from dept join table(l_arr) on deptno = column_value;
 10    return l_rc;
 11  end;
 12  /

Function created.

SQL> select f_test from dual;

F_TEST
--------------------
CURSOR STATEMENT : 1

CURSOR STATEMENT : 1

    DEPTNO DNAME          LOC
---------- -------------- -------------
        10 ACCOUNTING     NEW YORK
        20 RESEARCH       DALLAS
        30 SALES          CHICAGO


SQL>
...