Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   Программирование и базы данных (http://forum.oszone.net/forumdisplay.php?f=21)
-   -   [решено] PL/SQL результат цикла записать во временную таблицу (http://forum.oszone.net/showthread.php?t=350716)

Griboed0ff 16-02-2022 11:05 2980161

PL/SQL результат цикла записать во временную таблицу
 
Доброго времени суток!
Пытаюсь из цикла получить данные в виде таблицы, как если бы это был простой select, но пока получается вывести данные в виде текста в ответе.
описание
Требуется в столбце с ошибками, посчитать сколько каждой ошибки и вывести данные в табличном виде.
Я нашел все уникальные ошибки в столбце; в цикле посчитал сколько каждой;
Код:

DECLARE
rrrr  rta.list.request_id%TYPE;
begin   
  dbms_output.enable (buffer_size => NULL); 
  FOR jj IN (select distinct result_detail from rta.list where system_date>='16.02.2022' and operation_error='ERROR')
  loop
      select count(result_detail) into rrrr from rta.list where result_detail=jj.result_detail and system_date>='16.02.2022';
      dbms_output.put_line(rrrr||'::::'||jj.result_detail);
  end loop;
 
end;

ответ

1365::::ERROR:500
219::::ERROR:400
8416::::ERROR:11
223::::ERROR:138

Не могу придумать как записывать эти данные во временную таблицу, чтобы ответом на весь скрипт была таблица с данными, а не тест в консоли.
Требуется это для передачи полученной таблицы скрипту powershell и дальнейшей обработки. Просто как-нибудь поймать вывод без таблицы в powershell не могу.

Griboed0ff 16-02-2022 12:52 2980176

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

drop table qqqqqqq;
create global temporary table qqqqqqq
( ncount number,
  rerror varchar (1000))
  on commit delete rows;
DECLARE
rrrr  rta.list.request_id%TYPE;
begin   
  dbms_output.enable (buffer_size => NULL); 
  FOR jj IN (select distinct result_detail from rta.list where system_date>='16.02.2022' and operation_error='ERROR')
  loop
      select count(result_detail) into rrrr from rta.list where result_detail=jj.result_detail and system_date>='16.02.2022';
      Insert into qqqqqqq(ncount,rerror) values (rrrr,jj.result_detail);
      --dbms_output.put_line(rrrr||'::::'||jj.result_detail);
  end loop;
end;
--select * from qqqqqqq;

после end не удается вставить, а до требуется вставить в select into, который мне не нужен.

Griboed0ff 03-03-2022 13:49 2981063

Оказалось все просто:
Код:

drop table qqqqqqq;
create global temporary table qqqqqqq
( ncount number,
  rerror varchar (1000))
  on commit delete rows;
DECLARE
rrrr  rta.list.request_id%TYPE;
begin   
  dbms_output.enable (buffer_size => NULL); 
  FOR jj IN (select distinct result_detail from rta.list where system_date>='16.02.2022' and operation_error='ERROR')
  loop
      select count(result_detail) into rrrr from rta.list where result_detail=jj.result_detail and system_date>='16.02.2022';
      Insert into qqqqqqq(ncount,rerror) values (rrrr,jj.result_detail);
      --dbms_output.put_line(rrrr||'::::'||jj.result_detail);
  end loop;
end;
/
select * from qqqqqqq;

Почему-то нигде не написано, что нужен слеш между end и следующей командой.


Время: 11:38.

Время: 11:38.
© OSzone.net 2001-