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