2) Открыть явный курсор со списком объектов текущей схемы, начинающихся с 'KK_'. Сделать fetch всех данных из курсора. С помощью конструкции <имя явного курсора>%rowcount выдать в dbms_output количество строк в этом курсоре. Закрыть курсор.
3) Вставить в таблицу kk_objects_list перечень имен всех объектов текущей схемы (не только начинающихся с 'KK_'). С помощью конструкции sql%rowcount выдать в dbms_output количество вставившихся строк.
Напишем и выполним такой блок кода и посмотрим в dbms_output.
declare
cursor kk_cr is
select object_name
from user_objects
where object_name like 'KK\_%' escape '\';
v_gt kk_cr%rowtype;
begin
-- 1
execute immediate 'truncate table kk_objects_list';
dbms_output.put_line('1) Таблица kk_objects_list очищена от данных.');
-- 2
open kk_cr;
fetch kk_cr
into v_gt;
while kk_cr%found loop
fetch kk_cr
into v_gt;
end loop; /* только после полного fetch-а в kk_cr%rowcount будет полное количество строк в курсоре */
dbms_output.put_line('2) Найдено ' || to_char(kk_cr%rowcount) ||
' объектов текущей схемы, начинающихся с ''KK_''.');
close kk_cr;
-- 3
insert into kk_objects_list
(object_name)
select object_name from user_objects;
dbms_output.put_line('3) В таблицу kk_objects_list вставлено ' ||
to_char(sql%rowcount) ||
' имен объектов текущей схемы.'); /* это значение sql%rowcount "забудется" после commit или следующей команды */
commit;
end;
Можно посмотреть результат последней вставки:
select object_name from kk_objects_list;
Конструкцию sql%rowcount можно использовать не только поле insert, но и после update, delete, merge.