Войти

Показать полную графическую версию : [решено] PL/SQL результат цикла записать во временную таблицу


Griboed0ff
16-02-2022, 11:05
Доброго времени суток!
Пытаюсь из цикла получить данные в виде таблицы, как если бы это был простой 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
смог записать во временную таблицу, но не удается никуда после цикла вставить 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
Оказалось все просто: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 и следующей командой.




© OSzone.net 2001-2012