Operßtor EXISTS ve v²razech (WBIK)

Formßt:

exists jmΘno_prom∞nnΘ

V²znam:

Lze pou₧φt ve v²razu pro zjiÜt∞nφ existence vstupnφ prom∞nnΘ nebo prom∞nnΘ vytvo°enΘ pomocφ DeclareVariable Φi GetVariable. Vrßtφ TRUE, pokud prom∞nnß existuje, FALSE, pokud neexistuje.

Lze pou₧φt i pro zjiÜt∞nφ existence sloupce v n-tΘm °ßdku (Φφslovßno od 0) odpov∞di na SELECT v pojmenovanΘm bloku SQLStatement ve tvaru

exists jmeno_selectu[n].sloupec

Operßtor vrßtφ FALSE, pokud neexistuje sloupec nebo zßznam s Φφslem n v odpov∞di (viz p°φklad 2).

P°φklad 1:

pokud jeÜt∞ nebylo u klienta ulo₧eno COOKIE s nßzvem ANKETAID, ulo₧ ho nynφ (pou₧itφ v jazyce Üablon):

<HTML>
<HEAD>
<TITLE>Anketa - <%anketa.nazev%></TITLE>
<%if exists id_odpovedi.id %>
<meta http-equiv="Set-Cookie" content="anketa=<%id_odpovedi.id%>; Expires=<%today.today+2;cookieexpires%> 00:00:00 GMT">
<%endif%>
</HEAD>
<BODY BGCOLOR="#FFFFFF" BACKGROUND="">
...

Anketa - pokud nebylo u klienta ulo₧eno COOKIE s nßzvem ANKETA, dosud jeÜt∞ klient nevolil (pou₧itφ v konektoru)

#if exists HTTP_COOKIE_anketa
; pokud existuje cookie pro tuto anketu u₧ivatel v tΘto anket∞ u₧ hlasoval, p°epsat jeho volbu
SQLStatement: Akce
+ UPDATE Odpovedi
+ SET volba=%hodnota%,ipadr="%REMOTE_ADDR%"
+ WHERE id=%HTTP_COOKIE_anketa%;
#else
; jeÜt∞ nehlasoval, vlo₧it nov² zßznam 
SQLStatement: Akce
+ START TRANSACTION;
+ INSERT INTO Odpovedi(ipadr,volba,anketaid)
+ VALUES ("%REMOTE_ADDR%",%hodnota%,%anketaid%);
; sloupec id tabulky Odpovedi mß implicitnφ hodnotu sekvencφ Odpoved_id, 
; vlo₧enou unikßtnφ hodnotu p°eΦteme pomocφ sekvence.CurrVal 
SQLStatement: id_odpovedi
+ SELECT id FROM Odpovedi WHERE id=Odpoved_id.CURRVAL;
+ COMMIT;
EndSQLStatement;
#endif
...

P°φklad 2:

Ov∞°enφ p°ihlaÜovacφho jmΘna hesla:

<%WBC%>
DeclareVariable: Logged :=FALSE

SQLStatement: Login
+ SELECT id,jmeno,heslo
+ FROM Logtable
+ WHERE jmeno="%name%" AND heslo="%passw%"
EndSQL
#if exists Login[0].id
SetVariable: Logged :=TRUE
#endif
<%/WBC%>