Generowanie dokumentów XML z tabel relacyjnych - funkcje SQLX



Podobne dokumenty
XML Repository. Maciej Zakrzewicz.

2 Natywne bazy XML Języki zapytań XQuery Źródła 14

Standard SQL/XML. Wprowadzenie do XQuery

w PL/SQL bloki nazwane to: funkcje, procedury, pakiety, wyzwalacze

Wyzwalacz - procedura wyzwalana, składowana fizycznie w bazie, uruchamiana automatycznie po nastąpieniu określonego w definicji zdarzenia

Model semistrukturalny

KOLEKCJE - to typy masowe,zawierające pewną liczbę jednorodnych elementów

Intro. I.Wojnicki, ZTB:XML ZTB: XML. Igor Wojnicki. Katedra Informatyki Stosowanej, Akademia Górniczo-Hutnicza w Krakowie.

LINQ TO XML. Autor ćwiczenia: Marcin Wolicki

Bazy Danych i Usługi Sieciowe

Funkcje w PL/SQL Funkcja to nazwany blok języka PL/SQL. Jest przechowywana w bazie i musi zwracać wynik. Z reguły, funkcji utworzonych w PL/SQL-u

1: 2: 3: 4: 5: 6: 7: 8: 9: 10:

Bazy danych i usługi sieciowe

Relacyjne bazy danych. Podstawy SQL

Procedury i funkcje składowane

Oracle PL/SQL. Paweł Rajba.

Pakiety podprogramów Dynamiczny SQL

Bloki anonimowe w PL/SQL

Operacja PIVOT w języku SQL w środowisku Oracle

XML w bazach danych i bezpieczeństwie

Relacyjne bazy danych. Podstawy SQL

Bazy danych wykład dwunasty PL/SQL, c.d. Konrad Zdanowski ( Uniwersytet Kardynała Stefana Bazy danych Wyszyńskiego, wykładwarszawa)

Procedury wyzwalane. (c) Instytut Informatyki Politechniki Poznańskiej 1

Systemy GIS Tworzenie zapytań w bazach danych

Wprowadzenie do języka SQL

Tworzenie widoku CREATE OR REPLACE VIEW [nazwa_widoku] AS SELECT [nazwy_kolumn] FROM [nazwa_tablicy];

XML w bazie danych IBM DB2

Język PL/SQL Procedury i funkcje składowane

Oracle PL/SQL. Paweł Rajba.

PODSTAWY BAZ DANYCH 13. PL/SQL

XML w bazach danych i bezpieczeństwie

2 Natywne bazy XML Języki zapytań XQuery Źródła 18

Kolekcje Zbiory obiektów, rodzaje: tablica o zmiennym rozmiarze (ang. varray) (1) (2) (3) (4) (5) Rozszerzenie obiektowe w SZBD Oracle

Język SQL. Rozdział 10. Perspektywy Stosowanie perspektyw, tworzenie perspektyw prostych i złożonych, perspektywy modyfikowalne i niemodyfikowalne.

1 XML w bazach danych

Spis treści. Przedmowa

Procedury składowane. Funkcje vs. procedury Funkcja. Procedura. zazwyczaj ma parametry tylko typu IN; można wywoływać z poziomu

Język PL/SQL. Rozdział 5. Pakiety podprogramów. Dynamiczny SQL

BAZA DANYCH SIECI HOTELI

Język SQL. Rozdział 2. Proste zapytania

Oracle PL/SQL. Paweł Rajba.

Oracle PL/SQL. Paweł Rajba.

Instrukcja podwaja zarobki osób, których imiona zaczynają się P i dalsze litery alfabetu zakładamy, że takich osbób jest kilkanaście.

Multimedialne bazy danych - laboratorium

Blaski i cienie wyzwalaczy w relacyjnych bazach danych. Mgr inż. Andrzej Ptasznik

UPDATE Studenci SET Rok = Rok + 1 WHERE Rodzaj_studiow =' INŻ_ST'; UPDATE Studenci SET Rok = Rok 1 WHERE Nr_albumu IN ( '111345','100678');

SQL Server i T-SQL w mgnieniu oka : opanuj język zapytań w 10 minut dziennie / Ben Forta. Gliwice, Spis treści

Język SQL. Rozdział 7. Zaawansowane mechanizmy w zapytaniach

Wykład 5. SQL praca z tabelami 2

Bazy danych. Bazy danych. Zapytania SELECT. Dr inż. Paweł Kasprowski.

Kursory i wyjątki. (c) Instytut Informatyki Politechniki Poznańskiej 1

Tworzenie raportów XML Publisher przy użyciu Data Templates

Systemowe aspekty baz

Plan bazy: Kod zakładający bazę danych: DROP TABLE noclegi CASCADE; CREATE TABLE noclegi( id_noclegu SERIAL NOT NULL,

Laboratorium nr 4. Temat: SQL część II. Polecenia DML

Język PL/SQL. Rozdział 6. Procedury wyzwalane

Nauczycielem wszystkiego jest praktyka Juliusz Cezar. Nauka to wiara w ignorancję ekspertów Richard Feynman

Bartosz Jachnik - Kino

Relacyjne bazy danych a XML

PL/SQL. Zaawansowane tematy PL/SQL

ACESS- zadania z wykorzystaniem poleceń SQL

Podzapytania. Rozdział 5. Podzapytania. Podzapytania wyznaczające wiele krotek (1) Podzapytania wyznaczające jedną krotkę

Perspektywy Stosowanie perspektyw, tworzenie perspektyw prostych i złożonych, perspektywy modyfikowalne i niemodyfikowalne, perspektywy wbudowane.

Procedury wyzwalane. Rozdział 13. Procedury wyzwalane. Cele stosowania procedur wyzwalanych. Definiowanie procedury wyzwalanej DML

Konstruowanie Baz Danych SQL UNION, INTERSECT, EXCEPT

SQL do zaawansowanych analiz danych część 1.

Bazy danych. dr inż. Arkadiusz Mirakowski

Klasyczna Analiza Danych

Obiektowe bazy danych

Grupowanie i funkcje agregujące

Język PL/SQL Pakiety podprogramów

Podzapytania. Rozdział 5. Podzapytania. Podzapytania wyznaczające wiele krotek (1) Podzapytania wyznaczające jedną krotkę

Przykładowa baza danych BIBLIOTEKA

Cechy języka XQUERY. o na wejściu dokument lub fragment względnie kolekcja dokumentów lub fragmentów o na wyjściu dokument lub fragment.

DECLARE <nazwa_zmiennej> typ [(<rozmiar> )] [ NOT NULL ] [ { := DEFAULT } <wartość> ];

kończy wysyłanie danych do pliku tworzy strukturę tabeli wyświetla opis struktury tabeli zmiana nazwy tabeli usuwanie tabeli

PL/SQL. Zaawansowane tematy PL/SQL. Piotr Medoń

Hurtownia Świętego Mikołaja projekt bazy danych

Język SQL. Rozdział 8. Język manipulowania danymi DML

Obiektowe bazy danych Ćwiczenia laboratoryjne (?)

Bazy danych. Plan wykładu. Diagramy ER. Podstawy modeli relacyjnych. Podstawy modeli relacyjnych. Podstawy modeli relacyjnych

Wykład 6. SQL praca z tabelami 3

Typy metod: konstruktory, destruktory, selektory, zapytania, iteratory.

Wykład 5 funkcje i procedury pamiętane widoki (perspektywy) wyzwalacze

strukturalny język zapytań używany do tworzenia i modyfikowania baz danych oraz do umieszczania i pobierania danych z baz danych

Plan wykładu BAZY DANYCH II WYKŁAD 3. Zasięg zmiennych. Zasięg zmiennych

Cele. Definiowanie wyzwalaczy

P o d s t a w y j ę z y k a S Q L

E.14 Bazy Danych cz. 18 SQL Funkcje, procedury składowane i wyzwalacze

Bazy danych Język SQL część 2 Wykład dla studentów matem

Zaawansowane bazy danych i hurtownie danych semestr I

Struktura drzewa w MySQL. Michał Tyszczenko

15. Funkcje i procedury składowane PL/SQL

Ćwiczenia 2 IBM DB2 Data Studio

- język zapytań służący do zapisywania wyrażeń relacji, modyfikacji relacji, tworzenia relacji

Używany kiedy pełna treść instrukcji SQL jest nieznana przed uruchomieniem programu.

Przykład połączenie z bazą danych

Materiały. Technologie baz danych. Plan wykładu Kursory. Wykład 5: Kursory jawne. Podprogramy. Kursory jawne. Kursory niejawne

Cheatsheet PL/SQL Andrzej Klusiewicz 1/9

Transkrypt:

Aktualizowanie dokumentów XML ( Oracle ) do aktualizowania zawartości dokumentów XML służy między innymi funkcja updatexml. wynikiem jej działania jest oryginalny dokument ze zmodyfikowanym fragmentem, wyznaczonym przez wyrażenie XPath, podane jako argument. dokument jest aktualizowany jedynie w pamięci, a więc by zmodyfikować zawartość tabeli, konieczne jest wykorzystanie funkcji updatexml wspólnie z poleceniem UPDATE. składnia: updatexml( < obiekt_xmltype >,<' wyrażenie_xpath'>,<fragment_xml>) przykład: select * from produkty_xml; KOD OPIS ---------------------- ------------------- 125 <produkt><nazwa>komputer </nazwa> <cena>1975</cena></produkt> UPDATE Produkty_xml SET opis = updatexml(opis, '/produkt[nazwa="komputer "]/cena/text()','1500') WHERE kod=125; Oraz inne dostępne w dokumentacji: http://docs.oracle.com/cd/b28359_01/appdev.111/b28369/xdb04cre.htm#chdchhjb insertchildxml insertchildxmlbefore insertchildxmlafter insertxmlbefore insertxmlafter appendchildxml deletexml Generowanie dokumentów XML z tabel relacyjnych - funkcje SQLX Funkcja XMLElement i XMLAttributes tworzy element XML z danych nie będących XML 1

SELECT numer, XMLElement ( NAME pracownik, nazwisko) wynik FROM pracownicy ; NUMER ---------- ------------------------------------------------ 1000 <pracownik>lech</pracownik> 1080 <pracownik>koliberek</pracownik> 1130 <pracownik>kolski</pracownik> 1150 <pracownik>bulski</pracownik> atrybuty tworzonego elementu definiowane funkcją XMLAttributes SELECT XMLElement ( NAME pracownik, XMLAttributes ( numer AS Id ), nazwisko ) wynik FROM pracownicy ; ---------- ------------------------------------------------ <pracownik Id="1000">Lech</pracownik> <pracownik Id="1080">Koliberek</pracownik> <pracownik Id="1130">Kolski</pracownik> <pracownik Id="1150">Bulski</pracownik> można zmienić domyślną nazwę atrybutu podając alias dla kolumny tabeli elementy dzieci tworzone są przez zagnieżdżone wywołanie XMLElement wartość NULL argumentu XMLElement powoduje utworzenie pustego elementu SELECT XMLElement( "pracownik", XMLAttributes(numer as"id"), XMLElement(nazwisko, nazwisko), XMLElement(pensja,placa+dodatek)) Wynik FROM pracownicy; ------------------------------------------------------------------------------------------------------------------------------ <pracownik id="1000"><nazwisko>lech</nazwisko><pensja>9810</pensja></pracownik> <pracownik id="1080"><nazwisko>koliberek</nazwisko><pensja></pensja></pracownik> <pracownik id="1010"><nazwisko>podgajny</nazwisko><pensja>6180</pensja></pracownik> <pracownik id="1150"><nazwisko>bulski</nazwisko><pensja></pensja></pracownik> XMLElement może generować elementy o mieszanej zawartości ( elementy - dzieci i tekst ) 2

SELECT XMLElement( name "szef", XMLElement(name "nazwisko",nazwisko), ' szef wszystkich ', XMLElement(name "wynagrodzenie",placa+dodatek)) wynik FROM pracownicy WHERE numer=1000; ------------------------------------------------------------------------------- <szef><nazwisko>lech</nazwisko> szef wszystkich <wynagrodzenie>9810</wynagrodzenie></szef> Funkcja XMLForest tworzy las elementów XML z danych nie będących XML. może być wykorzystana do utworzenia listy elementów - dzieci w elemencie tworzonym funkcją XMLElement wartość NULL powoduje pominięcie tego elementu SELECT XMLElement( name "pracownik",xmlattributes( numer as "Id"), XMLForest(nazwisko, etat, dodatek)) wynik FROM pracownicy ; ------------------------------------------------------------------------------------------------------------------------------------------- <pracownik Id="1000"> <NAZWISKO>Lech</NAZWISKO><ETAT>Dyrektor</ETAT><DODATEK>570</DODATEK> </pracownik> <pracownik Id="1080"> <NAZWISKO>Koliberek</NAZWISKO><ETAT>Sekretarka</ETAT> </pracownik> <pracownik Id="1010"> <NAZWISKO>Podgajny</NAZWISKO><ETAT>Profesor</ETAT><DODATEK>420</DODATEK> </pracownik> <pracownik Id="1150"><NAZWISKO>Bulski</NAZWISKO><ETAT>Stażysta</ETAT></pracownik> Funkcja XLMAgg tworzy las elementów z kolekcji elementów XML wywiedzionych z różnych wierszy relacji. hierarchiczne struktury XML można budować pobierając dane z wielu tabel SELECT XMLElement( name "Dzial",XMLAttributes( nazwa as "nazwa"), XMLElement(name "liczba",count(numer) ), XMLAgg(XMLElement(name "pracownik",nazwisko) ORDER BY nazwisko)) wynik FROM pracownicy FULL JOIN zespoly USING (id_zesp) GROUP BY nazwa; 3

---------------------------------------------------------------------------------- <Dzial nazwa="administracja"><liczba>2</liczba> <pracownik>koliberek</pracownik><pracownik>lech</pracownik></dzial> <Dzial nazwa="audyt"><liczba>0</liczba> <pracownik></pracownik></dzial> <Dzial nazwa="bazy danych"><liczba>4</liczba> <pracownik>misiecki</pracownik><pracownik>muszyński</pracownik><pracownik>podgajny</pracownik> <pracownik>rus</pracownik></dzial> <Dzial nazwa="multimedia"><liczba>0</liczba> <pracownik></pracownik></dzial> <Dzial nazwa="sieci komputerowe"><liczba>4</liczba> <pracownik>delecki</pracownik><pracownik>maleja</pracownik><pracownik>rajski</pracowni k><pracownik>warski</pracownik></dzial> <Dzial nazwa="systemy operacyjne"><liczba>3</liczba> <pracownik>kolski</pracownik><pracownik>lubicz</pracownik><pracownik>orka</pracownik></dzial> <Dzial nazwa="nowy"><liczba>0</liczba><pracownik></pracownik></dzial> <Dzial><liczba>1</liczba><pracownik>Bulski</pracownik></Dzial> PERSPEKTYWY XML W przypadku udostępniania danych w formacie XML bardzo ważnym mechanizmem stają się perspektywy. Ich zadaniem jest integracja dostępnych informacji o różnej strukturze umożliwienie nadania ściśle określonej struktury danym semistrukturalnym przykład: CREATE OR REPLACE VIEW Filmoteka_xml(doc) AS SELECT XMLElement(name "FILMOTEKA", XMLAgg(XMLElement(name "FILM",XMLForest(tytul,rezyser),XMLElement(name "OBSADA",XMLAgg(XMLElement(name "AKTOR",nazwisko)))))) FROM filmy FULL JOIN obsady USING(tytul) GROUP BY tytul,rezyser; SELECT * FROM Filmoteka_xml; DOC ------------------------------------------------------------------ <FILMOTEKA> <FILM> <TYTUL>Dług</TYTUL><REZYSER>Krauze Krzysztof</REZYSER> <OBSADA><AKTOR>Chyra</AKTOR></OBSADA> </FILM> <FILM> <TYTUL>Potop</TYTUL><REZYSER>Hoffman Jerzy</REZYSER> <OBSADA><AKTOR></AKTOR></OBSADA> </FILM> </FILMOTEKA> 4

SELECT extract(doc,'//film[count(obsada/aktor)>2]') FROM Filmoteka_xml; ------------------------------------------------------------------------------------------------------------------------ <FILM> <TYTUL>Ogniem i mieczem</tytul><rezyser>hoffman Jerzy</REZYSER> <OBSADA> <AKTOR>Seweryn</AKTOR><AKTOR>Domogarow</AKTOR><AKTOR>Olbrychski</AKTOR> </OBSADA> </FILM> Pakiet DBMS_XMLGEN służy do tworzenia dokumentów XML na bazie wyników zapytań SQL utworzone w ten sposób dokumenty stanowią dokładne odzwierciedlenie struktury oraz zawartości tabel, będących wynikami podanych zapytań podstawowe funkcje to getxml( ) i getxmltype przykłady: SELECT DBMS_XMLGEN.getxml(' SELECT * FROM filmy ') wynik FROM dual; -------------------------------------------------------------------------------------------------------- <?xml version="1.0"?> <ROWSET> <ROW> <TYTUL>Powiększenie</TYTUL> <REZYSER>Antonioni Michelangelo</REZYSER> <KRAJ>GB</KRAJ> <ROK>1967</ROK> <NAGRODA>T</NAGRODA> <KOSZT>3450000</KOSZT> </ROW> <ROW> <TYTUL>Matnia</TYTUL> <REZYSER>Polański Roman</REZYSER> <KRAJ>GB</KRAJ> <ROK>1966</ROK> <NAGRODA>T</NAGRODA> <KOSZT>560000</KOSZT> </ROW> </ROWSET> 5

import java.sql.*; import java.io.*; import oracle.xml.sql.query.*; Connection conn = DriverManager.getConnection ( jdbc:oracle:thin:@oracle4.icis.pcz.pl:1521:oracle4, user, password ) ; OracleXMLQuery zap = new OracleXMLQuery( conn, SELECT * FROM Pracownicy ); zap.setrowtag( PRACOWNIK ); String xmlstring = zap.getxmlstring(); try { File outputfile = new File( Plik ); FileWriter out = new FileWriter ( outputfile ); out.write (xmlstring ); out.close(); } catch ( Exception e ) { System.out.println ( BLEDY ) ; } conn.close(); CREATE OR REPLACE PROCEDURE PrintClobOut ( result IN OUT NOCOPY CLOB ) IS xmlstr VARCHAR2(32767); line VARCHAR2(2000); BEGIN xmlstr:=dbms_lob.substr(result,32767); LOOP EXIT WHEN xmlstr IS NULL; line:=substr(xmlstr,1,instr(xmlstr,chr(10))-1); DBMS_OUTPUT.put_line(' ' line); xmlstr:=substr(xmlstr,instr(xmlstr,chr(10))+1); END LOOP; END; DECLARE queryctx DBMS_XMLQuery.ctxType; result CLOB; BEGIN queryctx := DBMS_XMLQuery.newContext(' SELECT * FROM Czytelnicy'); result := DBMS_XMLQuery.getXML(queryCtx); printclobout(result); DBMS_XMLQuery.closeContext(queryCtx); END ; 6

<?xml version = '1.0'?> <ROWSET> <ROW num="1"> <NUMER>5</NUMER> <NAZWISKO>Domański</NAZWISKO> <IMIE>Tomasz</IMIE> <ADRES>Częstochowa ul Ptasia 4</ADRES> <STATUS>Student</STATUS> </ROW> <ROW num="13"> <NUMER>29</NUMER> <NAZWISKO>Siedlecka</NAZWISKO> <IMIE>Olga</IMIE> <ADRES>Częstochowa ul Wyzwolenia 33</ADRES> <STATUS>Pracownik</STATUS> </ROW> </ROWSET> Język zapytań do XML powinien: umożliwiać zapisanie złożonych warunków wyszukiwania być deklaratywny zwracać wyniki w tej samej formie, co dane źródłowe umożliwiać wykonywanie przekształceń znalezionej informacji, w tym agregacji zachować hierarchię i sekwencję struktur Przegląd języków do xml trochę historii Lorel opracowany w Uniwersytecie Stanforda, składniowo podobny do SQL; był wzorowany na OQL ze standardu ODMG. XML-QL opracowano w laboratoriach AT&T. Zapytania składają się z dwóch części where i construct XML-GL graficzny język zapytań opracowany na Politechnice Mediolańskiej; jest próbą realizacji języka przyjaznego ludziom na wzór QBE ( zapytanie przez przykład ) XSLT- język do definiowania transformacji dokumentów XML w inne dokumenty XQL- służy do wybierania i filtrowania elementów oraz tekstu z dokumentów XML; nie pozwala na konstruowanie nowych elementów w wyniku zapytania. XPATH- deklaratywny język wykorzystywany przez kilka innych technologi rekomendowanych przez konsorcjum W3C; między innymi do wyszukiwania wzorców w dokumentach XML. 7