Aria

Apache Derby – tutorial

Apache Derby: operator XMLEXISTS

Opis

Sprawdza czy podane dane istnieją w kolumnach typu XML

Składnia

XMLEXISTS (string PASSING BY REF value [BY REF])

Objaśnienia

‘string’ – łańcuch znakowy, który jest wyrażeniem XPath wymaganym przez Apache Xalan, który jest używany do
przetwarzania wyrażeń XML w Derby. Ponieważ Xalan nie obsługuje XQuery, Derby również nie obsługuje XQuery.
Według dokumentacji Apache Derby więcej informacji na ten temat można znaleźć na stronie XPath oraz XQuery.

‘string’ nie może być ani parametrem, ani wyrażeniem, które nie jest znakowe, albo wyrażeniem, które jest
znakowe, ale jest liczbą np. typu int .

‘value’ musi być wartością typy XML tworzącą prawidłowy dokument SQl/XML. Nie może być parametrem. Nie może być
również łańcuchem znaków ani żadnym innym typem danych Derby, gdyż Derby nie wykonuje żadnego domyślnego
parsowania czy rzutowania wartości XML.

‘value’ może być sekwencją zwracaną przez operator XMLQuery – argument jest akceptowany jeśli sekwencja jest
dokładnie jednym węzłem, który jest węzłem dokumentu.

W każdym innym przypadku Derby wrzuca błąd.

‘PASSING’ jest obowiązkowe

‘BY REF’ jest elementem opcjonalnym , który jest jednocześnie elementem domyślnym określającym jedyny sposób
przenoszenia wartości, więc może być pominięty. W

Operator XMLEXISTS jest operatorem typu SQL Boolean .

Zwraca

  • UNKNOWN – jeśli ‘value’ jest NULL
  • TRUE – jeśli zwracana sekwencja nie jest pusta
  • FALSE – jeśli zwracana sekwencja jest pusta

Operatora można użyć wszędzie tam gdzie dozwolona jest wartość typu Boolean.

Przykład

SELECT id, XMLEXISTS('//imie[@country=\"PL\"]' PASSING BY REF pies) FROM psy

Tabela ‘psy’ zawiera dwie kolumny; ‘id’ typu INTEGER i ‘pies’ typu XML. XMLEXISTS sprawdza czy każdy rekord ma w
kolumnie ‘pies’ element ‘imie’ i czy wartość atrybutu tego elementu jest równa ‘PL’

Przykład 2

SELECT id FROM psy WHERE XMLEXISTS('//pies/imie' PASSING BY REF pies)

XMLEXISTS sprawdza czy dokument w kolumnie ‘pies’ istnieje i czy zawiera element ‘imie’. Jeśli tak umieszcza ‘id’
w zbiorze wynikowym.

Przykład 3

CREATE TABLE psy (id INTEGER, pies XML CHECK(XMLEXISTS('//pies' PASSING BY REF pies)))

Tworzymy tabele ‘psy’ zawierającą dwie kolumny: ‘id’ typu INTEGER i ‘pies’ typu XML. CHECK ogranicza dane
wprowadzane do kolumny ‘pies’ do tych, które zawierają co najmniej jeden element ‘pies’.

Przykład

Przykład zbiorczy dla operatorów XML znajduje się we wpisie Apache Derby: operatory
XML