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

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

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

Код: 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
Запихнуть результат out sys_refcursor в таблицу
    #39936571
Фотография Stax
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
takini23,

exit when sql %notfound;

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

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

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


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