Я использую библиотеки PLPDF для создания электронных таблиц для различных файлов - я пытаюсь получить процедуру, написанную для получения значений каждого поля, и последовательно вставлять их в электронную таблицу. Эта операция может включать в себя множество различных таблиц, входящих в различные таблицы, поэтому простое выполнение экспорта не приведет к его сокращению.
В этом примере созданы два курсора из таблиц - USER_TAB_COLUMNS для выбора имен столбцов и фактический запрос представления для извлечения данных. У меня есть один цикл, чтобы пройти запись данных по записи, а второй - по полям внутри записи.
Перед тем, как приступить к реальной записи в блоб электронной таблицы, я просто запускаю dbms_output.putline
, чтобы убедиться, что получаю необходимые данные.
declare
q_str varchar2(100);
this_vc varchar2(3000);
cursor diet_table is
select * from vcars_diet where nhp_id = 8573;
cursor diet_stru is
select 'begin :1 := i.' || column_name || '; end;' line_o_code from user_tab_columns where table_name = 'VCARS_DIET';
begin
for i in diet_table loop
DBMS_OUTPUT.PUT_LINE ('--------------------------------------------------------');
for h in diet_stru loop
DBMS_OUTPUT.PUT_LINE ('Varchar Value for i: "' || h.line_o_code || '"');
EXECUTE IMMEDIATE (h.line_o_code) USING out this_vc;
DBMS_OUTPUT.PUT_LINE ('Varchar Value for i.' || h.line_o_code || ' is: '||this_vc);
end loop;
end loop;
end;
Поля в таблице диет:
NHP_ID
DATE_TIME
DIET_NO
FORM_NAME
DATA_TYPE
Результаты:
ORA-06550: строка 1, столбец 13:
PLS-00201: должен быть объявлен идентификатор «I.NHP_ID»
ORA-06550: строка 1, колонка 7:
PL / SQL: оператор игнорируется
ORA-06512: в строке 33
06550. 00000 - «строка% s, столбец% s: \ n% s»
* Причина: обычно ошибка компиляции PL / SQL.
* Действие: