Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
отчет 2 лаба.docx
Скачиваний:
0
Добавлен:
01.07.2025
Размер:
3 Мб
Скачать
☆
    1. Разработать процедуру для генерации xml.

-- генерация xml

select xmlelement("zakaz", -- корневой элемент

xmlelement("id",id_z), -- вложенные элементы

xmlelement("name", fio_k),

xmlelement("marka", marka),

xmlelement("kod",kod_rab),

xmlelement("karta", number_rem_kart),

xmlelement("data", data_v),

xmlelement("sotr", number_sotr)

) as k_xml

from zakaz_na_rem

Процедура для генерации XML данных о заказах на ремонт по марке автомобиля

create or replace

PROCEDURE XML_Generate(

out_rc out sys_refcursor,

out_res out integer, -- код результата

in_id in zakaz_na_rem.id_z%type, -- вх/вых параметр - идентификатор

in_marka in zakaz_na_rem.marka%TYPE

) IS

BEGIN

out_res:=0; -- 0 - все нормально

IF (in_id IS NULL) and (in_marka IS NULL) THEN

out_res:=1;

ELSE

-- Выборка XML с конвертацией в varchar2

open out_rc for

-- генерация xml

select xmlelement("zakaz", -- корневой элемент

xmlelement("id",id_z), -- вложенные элементы

xmlelement("name", fio_k),

xmlelement("marka", marka),

xmlelement("kod",kod_rab),

xmlelement("karta", number_rem_kart),

xmlelement("data", data_v),

xmlelement("sotr", number_sotr)

) as k_xml

from zakaz_na_rem

where marka like in_marka;

commit;

end if;

END;

Выполнение процедуры и её результат приведены на рисунках ниже:

-- генерация xml

select xmlelement("zakaz", -- корневой элемент

xmlagg( -- агрегирование нескольких записей в один элемент

xmlelement("zak",

xmlelement("id",id_z), -- вложенные элементы

xmlelement("name", fio_k),

xmlelement("marka", marka),

xmlelement("kod",kod_rab),

xmlelement("karta", number_rem_kart),

xmlelement("data", data_v),

xmlelement("sotr", number_sotr)

)

)

)as k_xml

from zakaz_na_rem

Процедура для генерации XML данных о заказах на ремонт по марке автомобиля с агрегированием нескольких записей в один элемент

create or replace PROCEDURE XML_Generate2(

out_rc out sys_refcursor,

out_res out integer, -- код результата

in_id in zakaz_na_rem.id_z%type, -- вх/вых параметр - идентификатор

in_marka in zakaz_na_rem.marka%TYPE

) IS

BEGIN

out_res:=0; -- 0 - все нормально

IF (in_id IS NULL) and (in_marka IS NULL) THEN

out_res:=1;

ELSE

-- Выборка XML с конвертацией в varchar2

open out_rc for

-- генерация xml

select xmlelement("zakaz", -- корневой элемент

xmlagg( -- агрегирование нескольких записей в один элемент

xmlelement("zak",

xmlelement("id",id_z), -- вложенные элементы

xmlelement("name", fio_k),

xmlelement("marka", marka),

xmlelement("kod",kod_rab),

xmlelement("karta", number_rem_kart),

xmlelement("data", data_v),

xmlelement("sotr", number_sotr)

)

)

)as k_xml

from zakaz_na_rem

where marka like in_marka;

commit;

end if;

END;

Выполнение процедуры и её результат приведены на рисунках ниже: