Я пытаюсь форматировать данные, возвращаемые с помощью курсора в JSON, путем циклического обращения к записям и столбцам без явного вызова каждого имени столбца. Из того, что я исследовал, это очень хорошо, может быть, не простая задача или, по крайней мере, так просто, как я пытаюсь это сделать. Мне интересно, попробовал ли кто-нибудь другой подобный подход, и если им повезло.Вложенные петли таблицы для форматирования данных, PL/SQL
declare
type type_cur_tab is table of employees%rowtype
index by PLS_integer;
type type_col_tab is table of varchar2(1000)
index by binary_integer;
tbl_rec type_cur_tab;
tbl_col type_col_tab;
begin
select * BULK COLLECT INTO tbl_rec
from employees;
select column_name BULK COLLECT INTO tbl_col
from all_tab_columns
where UPPER(table_name) = 'EMPLOYEES';
for i IN 1..tbl_rec.COUNT Loop
for j IN 1..tbl_col.count Loop
dbms_output.put_line(tbl_rec(i).tbl_col(j));
end loop;
end loop;
end;
Он выдает сообщение об ошибке «tbl_col». Я уверен, что это bc, он ищет 'tbl_col', указанный внутри 'tbl_rec'. Любая помощь приветствуется.
ПРИМЕЧАНИЕ. Я знаю о встроенном преобразовании JSON, но мне не удалось получить его так быстро, как хотелось бы, поэтому я пытаюсь выполнить цикл и добавить соответствующее форматирование по пути ,
Вы комбинируете метаданные (ALL_TAB_COLUMNS) с данными приложения (СОТРУДНИКИ). Вы можете сделать это только с помощью динамического программирования, что будет сложно с PL/SQL, как это. Также очень маловероятно, что ваш ручной код будет быстрее, чем обычные библиотеки Oracle. Поэтому, вероятно, вы должны опубликовать свою встроенную программу здесь и спросить людей, может ли * этот * быть улучшен. – APC