602SQL-Úplná dokumentace Index  

Výběr záznamů pro výstup do XML pomocí proměnných

Navržený DAD se často používá opakovaně pro export různých množin záznamů ze stejným způsobem propojených databázových tabulek. Níže popíšeme metody, jak zadat výběr záznamů, které vystoupí do XML souboru, aniž by bylo nutno měnit návrh DAD, tedy pouhou změnou proměnné (klientské či serverové).

Způsob výběru množiny záznamů závisí na druhu DAD.

Odkazy na proměnné v DAD

V syntetických i analytických DAD lze odkazovat na proměnné, které existují mimo DAD a jejichž momentální hodnoty v okamžiku exportu se využijí při výběru záznamů pro export. Tyto proměnné lze použít například v dotazu obsaženém v syntetickém DAD nebo v podmínkách obsažených v elementech, v nichž se připojují tabulky.

Upozonění:Proměnné klienta či serveru lze použít v DADu ještě v jiném významu: lze je svázat s XML atributem nebo textem a použít je pro přenos oběma směry.

Proměnné klienta

Je-li export volán z klienta, v DAD lze odkazovat na proměnné klienta (host variables). Jsou to proměnné existující v klientském programu, který provádí export. Při volání z externího jazyka se popis těchto proměnných předá funkci pro export do XML.

V DAD se před jménem každé proměnné klienta musí uvést dvojtečka.

Při použití proměnných klienta v DAD se obecně postupuje takto:

  1. zvolte jména pro proměnné a použijte je v DAD,
  2. deklaruje pole hostvars, v němž budou popsány jména a typy všech proměnných klienta,
  3. před exportem nastavte hodnoty proměnných,
  4. funkci pro export dat do XML předejte pole hostvars a počet proměnných v tomto poli,
  5. poté můžete změnit hodnoty proměnných a exportovat jinou množinu záznamů.

Při práci z Delphi (CDK komponenta TSQL602XML) nebo z PHP je uvedený postup výrazně jednodušší.

Proměnné serveru

Je-li export volán na serveru z uložené procedury, v DAD lze odkazovat na proměnné deklarované v této uložené proceduře a na její parametry. Popis těchto proměnných není třeba nijak explicitně předávat.

V DAD se tyto proměnné označují prostě svým identifikátorem (bez dvojtečky).

Při použití proměnných v DAD postupujte takto:

  1. deklaruje potřebné proměnné v proceduře volající export.
  2. použijte proměnné v návrhu DAD,
  3. před exportem nastavte hodnoty proměnných,
  4. poté můžete změnit hodnoty proměnných a exportovat jinou množinu záznamů.

Upozornění: Správně navržený DAD obsahující proměnnou serveru nepůjde modifikovat interaktivním návrhářem (resp. bude se hlásit chyba). DAD je třeba navrhnout s proměnnou uvozenou dvojtečkou (pak půjde přeložit a je možné jej testovat) a poté v textovém editoru dvojtečku umazat (a zkoušet již jen pomocí API z procedury).

Syntetický DAD

Syntetický DAD obsahuje SQL dotaz, který vybere záznamy. Součástí dotazu mohou být podmínky, které na základě hodnot ve sloupcích filtrují z databázových tabulek potřebné záznamy.

Uvažujme jako příklad DAD obsahující dotaz:

SELECT * FROM T1, T2 WHERE T1.a=T2.b

Využití proměnných klienta v syntetickém DAD

V syntetickém DAD se proměnné zadají přímo do dotazu, obvykle do klauzule WHERE. Výše uvedený dotaz lze upřesnit pomocí klientských proměnných param_val a name_val takto:

SELECT * FROM T1, T2 WHERE T1.a=T2.b AND T1.param<:param_val AND T2.name=:name_val
Výběr záznamů pak bude záviset na hodnotách v obou proměnných.

V příkladech XML je DAD jménem Select synth demonstrující tuto techniku. K jeho použití je třeba předem zadat hodnotu proměnné klienta param_id (viz poslední odstavec).

Přesměrování syntetického DAD na jiný kurzor

Syntetický DAD může exportovat data také z jiného dotazu, než který je v něm uveden. Postupujte takto:

  1. připravte dotaz, který má stejnou strukturu sloupců, jako dotaz uložený v DAD,
  2. otevřete kurzor pro tento dotaz,
  3. předejte tento kurzor funkci pro export dat do XML,
  4. uzavřete kurzor.

Například můžete otevřít dotaz:

SELECT * FROM T1, T2 WHERE T1.a=T2.b AND T2.name='xyz'
a předat jej funkci pro export.

Podmínky v DADu

V DADu, který obsahuje postupně připojované tabulky, se výběr záznamů řídí podmínkami zadanými v popisech těch elementů, v nichž se připojuje tabulka.

Například v uzlu připojujícím tabulku T1 může být podmínka param<:param_val a v uzlu připojujícím tabulku T2 podmínka name=:name_val. Pole hostvars bude mít dva prvky pro proměnné jménem param_val a name_val. Pokud před exportem do XML přiřadíte hodnoty těmto proměnným, exportují se pouze záznamy splňující zadané podmínky.

Podmínky uváděné v návrhu DAD mohou mít libovolný tvar použitelný v dotazech v SQL. Každá podmínka může obsahovat libovolný počet klientských proměnných a odkazovat na libovolné sloupce všech tabulek použitých v DAD.

V příkladech XML je DAD jménem Select analyth demonstrující tuto techniku. K jeho použití je třeba předem zadat hodnotu proměnné klienta param_id (pro zkoušení z klientského prostředí návrháře - viz následující odstavec).

Dočasné proměnné v návrháři DAD

Klientské proměnné se definují v externích aplikacích pracujících s programovým rozhraním 602SQL. Aby bylo možno navrhovat a testovat DAD využívající klientské proměnné, návrhář DAD dovoluje dočasně popsat jména, typy a hodnoty proměnných - podrobnosti na straně Interaktivní návrhář DAD dole.

Klientské proměnné popsané v DAD se využijí pouze při práci v interaktivním návrháři. Při použití DAD z externího rozhraní se ignorují.