Базы данных Oracle - статьи



             

Решение - часть 3


uncommited_changes EXCEPTION; BEGIN IF NAME_IN('SYSTEM.FORM_STATUS') <> 'QUERY' THEN RAISE uncommited_changes; END IF;

FIRST_RECORD;

show_progress ('Формирование
списка полей для экспорта...'); num_items_v := setup_items
(cur_block_c);

show_progress ('Открытие временного файла...'); -- for C-S mode make adjustments below outfilename_v := tempfilename; outfile_v := TEXT_IO.FOPEN
(tempdir_pcoutfilename_v, 'w');

show_progress ('Формирование
строки заголовков столбцов...'); line_v := NULL; FOR i IN 1 .. num_items_v LOOP line_v := line_v format_value
(item_tab(i).prompt); IF i < num_items_v THEN line_v
:= line_v CHR(9); END IF; END LOOP; TEXT_IO.PUT_LINE(outfile_v, line_v);

LOOP IF MOD (counter_v, 100) = 0 THEN show_progress ( 'Форматирование записей блока
(' TO_CHAR(counter_v,'99990') ')...' ); END IF;

counter_v := counter_v + 1; line_v := NULL; FOR i IN 1 .. num_items_v LOOP line_v := line_v format_value ( NAME_IN (cur_block_c'.
'item_tab(i).name), item_tab(i).datatype ); IF i < num_items_v THEN line_v
:= line_v CHR(9); END IF; END LOOP; TEXT_IO.PUT_LINE(outfile_v, line_v);

EXIT WHEN NAME_IN('SYSTEM.LAST_RECORD')
= 'TRUE'; NEXT_RECORD; END LOOP; TEXT_IO.FCLOSE(outfile_v); item_tab.DELETE; GO_RECORD(TO_NUMBER(cur_record_c)); GO_ITEM (cur_item_c);

show_progress ( 'Всего экспортировано '
TO_CHAR(counter_v) ' записей' ); WEB.SHOW_DOCUMENT(cgi_script_pc
'?' outfilename_v, '_blank'); --host('cmd /C start excel '
outfilename_v); -- test in C-S mode EXCEPTION WHEN uncommited_changes THEN message('Перед выполнеием экспорта,
сохраните сделанные изменения!'); WHEN OTHERS THEN IF TEXT_IO.IS_OPEN(outfile_v)
THEN TEXT_IO.FCLOSE(outfile_v); END IF; RAISE; END to_excel; END fp_exp;

Не забудьте про cgi скрипт!




Содержание  Назад  Вперед