Гость
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Запихнуть результат out sys_refcursor в таблицу / 4 сообщений из 4, страница 1 из 1
12.03.2020, 10:02
    #39936565
takini23
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Запихнуть результат out sys_refcursor в таблицу
Здравствуйте!

Есть процедура которая получает на вход номер телефона на выход отдает номер телефона-баланс.

Если прогонять через тестирование процедуры ,скрипт отрабатывает за долю секунды

Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
declare 
  -- Non-scalar parameters require additional processing 
  p_personal_account common.t_number_15_0;
CURSOR pa_spisok IS select pa from temp s ;

 p_cur_balances sys_refcursor;

begin
  OPEN pa_spisok;
     LOOP
     FETCH pa_spisok BULK COLLECT INTO p_personal_account;
     EXIT WHEN p_personal_account.COUNT = 0;
     FOR indx IN 1 .. p_personal_account.COUNT 
    loop
  -- Call the procedure
  balance_info.get_hot_balance(p_personal_account ,
                               p_cur_balances => :p_cur_balances); -- результат 
                              
                               end loop;
                               END LOOP;
    CLOSE pa_spisok;
end;




Вопрос как результат p_cur_balances поместить в таблицу. Пробовал так ,но это какое-то "зацикливание" и скрипт подвисает

Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
declare
  -- Non-scalar parameters require additional processing 
  p_personal_account common.t_number_15_0;
  p_cur_balances     sys_refcursor;
  L_rec              balance_delivery%rowtype;
  CURSOR pa_spisok IS
    select pa from temp s;

begin
  OPEN pa_spisok;
  LOOP
    FETCH pa_spisok BULK COLLECT INTO p_personal_account;
    EXIT WHEN p_personal_account.COUNT = 0;
    
    FOR indx IN 1 .. p_personal_account.COUNT loop
      -- Call the procedure
      balance_info.get_hot_balance(p_personal_account, p_cur_balances);
      loop
      fetch p_cur_balances into L_rec;
    
      exit when sql%notfound;
    INSERT INTO sabelov_balance_delivery VALUES L_rec;
    end loop;
  end loop;
 
  END LOOP;

  CLOSE pa_spisok;
end;



Возможно есть идеи как создать правильный запрос ,вижу что проблема с циклами но не понимаю как перестроить..
...
Рейтинг: 0 / 0
12.03.2020, 10:13
    #39936571
Stax
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Запихнуть результат out sys_refcursor в таблицу
takini23,

exit when sql %notfound;

.....
stax
...
Рейтинг: 0 / 0
12.03.2020, 10:28
    #39936575
-2-
-2-
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Запихнуть результат out sys_refcursor в таблицу
takini23,

два наружных цикла не нужны.
...
Рейтинг: 0 / 0
12.03.2020, 11:59
    #39936607
takini23
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Запихнуть результат out sys_refcursor в таблицу
По итогу получилось так. Отрабатывает за долю секунд
Спасибо за помощь!

Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
declare
  -- Non-scalar parameters require additional processing 
  p_personal_account common.t_number_15_0;
  p_cur_balances     sys_refcursor;
  type tbl is table of sabelov_balance_delivery%rowtype
  index by binary_integer;
  
  L_rec tbl;

  CURSOR pa_spisok IS
    select pa from sabelov_temp s;

begin
  OPEN pa_spisok;

  FETCH pa_spisok BULK COLLECT
    INTO p_personal_account;

  -- Call the procedure
  balance_info.get_hot_balance(p_personal_account, p_cur_balances);
  fetch p_cur_balances BULK COLLECT INTO L_rec;

  --  
  FORALL i in L_rec.first .. L_rec.last
    INSERT INTO sabelov_balance_delivery VALUES L_rec (i);

  CLOSE pa_spisok;
end;
...
Рейтинг: 0 / 0
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Запихнуть результат out sys_refcursor в таблицу / 4 сообщений из 4, страница 1 из 1
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]