Rozdělení řetězce do více řádků pomocí dotazu nad tabulkou DUAL

Jednoduchým řešením jak rozdělit řetězec v Oracle do více řádků je využití možnosti kombinace dotazu nad „tabulkou“ DUAL a využití klauzule CONNECT BY. Vše si ukážeme na jednoduchém příkladu. [English version – How to select multiple rows from single line using a query over DUAL table] Představte si, že existuje následující řetězec: Tento řetězec potřebujeme…

Jak na zpracování XML s vícenásobnými uzly (XMLSequence v Oracle)

XML, které obsahuje vícenásobné uzly (tzv. multiple nodes) je nutné v Oracle databázi zpracovat funkcí XMLSequence. Ukážeme si její použití ve třech verzích. Nejprve s XML bez namespace, potom s nadefinovaným namespace a nakonec použití přímo v SQL výrazu. Co je to XML, případně namespace se dozvíte např. na W3Schools. [English version of the article…

Volání Webové služby (Webservice) v PL/SQL pomocí UTL_HTTP

Dnes si ukážeme, jak získat data z Webové služby (WebService) přímo v PL/SQL, jak jsem sliboval v předchozím článku. [English version – Calling Web Services in PL/SQL using UTL_HTTP package] K tomuto účelu potřebujete: Nástroj pro vývoj/testování webových služeb. Použijeme balíček SoapUI Prostředí SQL*Plus. Pro naše testy bude plně vyhovovat. Vytvoření testovací webové služby Vytvoříme…

Balíky UTL_HTTP, UTL_RAW a jejich využití pro metodu HTTP GET

Z databáze Oracle je možné pomocí balíku UTL_HTTP a UTL_RAW zasílat/přijímat dotazy z webového serveru. Na malé ukázce demonstruji jak tyto balíky použít. (V příkladu používám balík UTL_RAW z toho důvodu, že u některých webových serverů, možná i v kombinaci s verzí Oracle databáze, generuje funkce READ_TEXT Oracle EXCEPTION, občas se podaří dokonce vygenerovat coredump)….

SQL*Plus a historie příkazů v Linuxu pomocí rlwrap

SQL*Plus sám o sobě nemá implementovánu historii procházení mezi jednotlivými příkazy (výjimkou je poslední vykonaný příkaz, ten lze opětovně vyvolat pomocí „r“+Enter). V operačním systému Windows lze toto celkem dobře provést přes funkční klávesu F7, jak ukazuje následující obrázek. Elegantně lze listovat v historii vykonávaných příkazů. [English version – SQL*Plus and command history in Linux…

PIPELINED FUNCTION aneb jak na data dynamicky

Výsledný SQL dotaz v Oracle databázi lze maximálně dynamicky ovlivnit/generovat pomocí takzvaných PIPELINED FUNKCÍ. Jejich použití si ukážeme na následujícím příkladu: [English version – PIPELINED FUNCTION – how to get data dynamically] Vytvoříme nové datové typy PersonType a PersonTypeSet Do těchto datových typů budeme ukládat naše data. Vytvoříme PIPELINED FUNKCI Podíváme se na data (SQL…

Jak rekurzivně rekompilovat invalidní objekty

Na rekompilování invalidních objektů v Oracle databázi jistě existuje  na internetu spousta skriptů. Přesto jsem se rozhodl napsat vlastní balík (package), která umí navíc z rekompilování vynechat objekty, které jsou v tu chvíli nežádoucí, nebo se u nich kompilace na dlouhou dobu „zasekne“  (mám tím na mysli například objekty, které obsahují propojení do vzdálené databáze…

Validace XML pomocí XMLSchema v databázi Oracle

Pokud chceme využít validaci XML dokumentů pomocí XML Schema v databázi Oracle 9i (a vyšší), je nutné nejprve zjistit, jestli vůbec vaše databáze tuto možnost podporuje. Zda databáze obsahuje potřebnou knihovnu zjistíte následujícím způsobem.: [English version – Validating XML with XMLSchema in Oracle database] Moje testovací databáze verze Oracle 9i obsahuje následujícím komponenty: comp_name Oracle9i…