Architektury a techniky DS Cvičení č. 9 RNDr. David Žák, Ph.D. Fakulta elektrotechniky a informatiky
Cvičení č. 9 – zadání I Cílem tohoto cvičení je práce s dynamickými dotazy, dynamickými dotazy, systémovým katalogem, systémovým katalogem, XML dokumenty, XML dokumenty, funkcemi na formátování textu. funkcemi na formátování textu. Vytvořte proceduru tables_pk_info(schema), která vypíše seznam všech Vám přístupných tabulek v uvedeném schématu, jejich atributů, které tvoří primární klíč a z dané tabulky minimální a maximální hodnotu uvedeného atributu. Výsledek bude vrácen ve formátu XML dokumentu – viz příklad a to včetně formátování dle vzoru (zalamování řádků).
Cvičení č. 9 – zadání I Vzor: <ROWSET> TRPASLICI TRPASLICI ID ID POZNATKY POZNATKY ID_TRPASLIKA ID_TRPASLIKA POZNATKY POZNATKY ID_VLASTNOSTI ID_VLASTNOSTI </ROWSET>
Oracle a XML Současné IT prostředí je heterogenní, stále více se prosazuje XML jako univerzální formát pro výměnu dat, proto je i Oraclem masivně podporován. Oracle sází na kombinaci SQL + XML + Java Oracle umožňuje: - - vygenerovat výstup z dtb. tabulky či dotazu do XML - - definovat datový typ XML - - provádět XML operace nad daty v relačních databázích - - provádět SQL operace nad daty v XML dokumentech
XML repositář XML dokumenty jsou uloženy v XML repositářích, které umožňují přístup k těmto dokumentům prostřednictvím protokolů HTTP, FPT a WebDAV ( standard umožňující číst a měnit datové elementy databáze podobně jako složky a soubory souborového systému) Součástí repositáře je i správa přístupových oprávnění, správa složek, SQL vyhledávání v XML repositáři, API pro práci s XML repositářem a manipulace s objekty pomocí Java servletu.
Výpis tabulky ve formátu XML Funkce SYS_XMLGEN – vygeneruje několik XML dokumentů dle počtu řádků ve výsledku dotazu SYS_XMLAGG – vygeneruje jediný dokument Příklad: select SYS_XMLGEN(JMENO) from TRPASLICI; Stistko
Výpis tabulky ve formátu XML Funkce XMLelement – výpis pomocí elemetů XMLatributes – výpis jednotlivých atributů XMLforest – výpis atributů pomocí samostatných elementů Příklady: select xmlelement("trpaslik",xmlattributes(jmeno, narozen as "rok")) from TRPASLICI; select xmlelement("trpaslik",xmlforest (jmeno, narozen as "rok")) from TRPASLICI; Stistko 1980
Datový typ SYS.XMLType Příklad CREATE TABLE XML_table (zaznam SYS.XMLType); Pomocí funkce SYS.XMLType.createxml(řetězec) můžeme konvertovat textový řetězec na typ SYS.XMLType Příklad použití INSERT INTO XML_table VALUES (SYS.XMLType.createxml(řetězec obsahující XML dokument));
Technologie XQuery Jazyk XQuery je nově přijatý standard standardizační organizací W3C. Jazyk XQuery používá množinu příkazů FLOWR (akronym složený z hlavních příkazů FOR, LET, WHERE, ORDER BY, RETURN) FOR – umožňuje iteraci přes sourozenecké uzly (analogie FROM v SQL) LET – znamená přiřazení WHERE – filtrovací kritérium ORDER BY – řazení RETURN - určuje návratový dokument formátovaný dle našich požadavků Technologie XQuery může být použita jak nad XML dokumenty, tak i pro relační tabulky. Tato technologie je také vhodná i pro vytváření XML dokumentů v repositáři.
Balíček DBMS_XMLGEN Příklad použití v SQL dotazu: SELECT DBMS_XMLGEN.getXML('SELECT * FROM emp') FROM dual; Výsledek dotazu: 7369 SMITH CLERK DEC :00:
Balíček DBMS_XMLGEN Příklad použití v kodu PL/SQL: DECLARE ctx DBMS_XMLGEN.ctxHandle; xml CLOB; BEGIN ctx := dbms_xmlgen.newcontext('select * from emp'); dbms_xmlgen.setrowtag(ctx, 'MY-ROW-START-HERE'); xml := dbms_xmlgen.getxml(ctx); dbms_output.put_line(substr(xml,1,255)); END; /