Обновлено
Рад-люди!
TL;DR
Нужен рабочий код для циклического просмотра существующего списка всех моих таблиц, который создаст файлы CSV, выбирая 100 первых строк каждой таблицы. Существуют переменные, настроенные для захвата имен таблиц, которые будут использоваться для динамического вызова таблицы для выбора и присвоения имени файлу. Необходимо делать через PLSQL и SQLDeveloper. Ты знаешь да вае?
Вот ситуация:
- Необходимо собрать все таблицы (базовые таблицы не являются временными) и количество строк (количество строк > 0)
- Создайте цикл для выбора (*) первых 100 строк из списка таблиц.
- Возьмите результат запроса и поместите его в файл CSV.
Проблемы:
- Объявление переменных
- Использование начала и конца
- Использование динамического имени для создания уникальных файлов CSV
Вот мой код:
CREATE GLOBAL TEMPORARY TABLE NameRow (nom VARCHAR2(100), rowc INTEGER)
on commit delete ROWS;
insert into NameRow(nom, rowc) select table_name, num_rows from user_tables where temporary = 'N' and num_rows > 0;
--select * from namerow;
--select count(nom) from namerow;
--drop table namerow;
--no need for the row count > 0 because that was already done above
declare
counter number := 0;
totalrecords number := 0;
nmbre varchar2(100);
BEGIN
Select count(nom) into totalrecords from namerow;
WHILE counter <= totalrecords LOOP
select nom into nmbre from NameRow where rownum =1;
SET SPOOL ON
SPOOL c:\Users\l.r.enchaustegui\Documents\reporepo\||nmbre||.csv
select /*csv*/ * from HR.nmbre;
SET SPOOL OFF
delete from namerow where rownum=1;
counter := counter + 1;
End loop;
END;
Объяснение кода:
- Создается временная таблица с столбцом varchare и integer для записи всех таблиц в БД с их RowCount.
- Имена таблиц, вставленные во временную таблицу, не должны быть временными и содержать более 0 строк.
Следующий сегмент
- Объявление 3 переменных: 2 целых числа и varchar
- 2 целых числа: 1 — счетчик цикла. 1 записывает общее количество строк в таблице Temp, которые будут служить максимальным числом итераций в цикле.
- Varchar: Nmbre запишет имя первой таблицы во временной таблице.
Следующий сегмент
- Буфер по следующему пути, используя переменную Nmbre для динамического присвоения имени CSV-файлу.
- Spool Query с использованием переменной Nmbre для динамического выбора таблицы
- Удалить 1-ю строку из временной таблицы [служит для перехода к следующему имени таблицы]
- Катушка выключена
- Петля
- Конечная петля; Конец;
Где я не прав? Кроме того, я получаю эту ошибку:
Бонусный раунд: Ограничено разработчиком SQL