>> for select ... from T1
>> where ...
>> casefromwhere :X
>>  when 1 then TX, TX.F1 = :F1 and T1.Fx = TX.Fx
>>  when 2 then TX, TX.F1 = :F1 and not T1.Fx = TX.Fx
>> end
>> casefromwhere :Y
>>  when 1 then TY, TY.F1 = :F1 and T1.Fy = TX.Fy
>>  when 2 then TY, TY.F1 = :F1 and not T1.Fy = TX.Fy
>> end
>
> üÔÏ ÂÙÌ ÂÙ ÍÅÈÁÎÉÚÍÉÝÅ, ËÏÎÅÞÎÏ. îÕÖÎÏ ÌÉ ×ÏÔ ÔÏÌØËÏ - ÜÔÏ ×ÏÐÒÏÓ? óÅÊÞÁÓ 
> ÔÁËÏÅ ÐÏÌÕÞÁÅÔÓÑ ×ÙÔ×ÏÒÑÔØ, × ÞÁÓÔÎÏÓÔÉ, FIBPlus'ÏÍ Ó Å×ÏÊÎÙÍÉ ÍÁËÒÏÓÁÍÉ 
> (ÏÎÉ ÓÉÌØÎÏ ÖÉÚÎØ ÕÐÒÏÝÁÀÔ), ÎÏ ÔÏÌØËÏ, ÒÁÚÕÍÅÅÔÓÑ, ÎÁ ËÌÉÅÎÔÓËÏÊ ÓÔÏÒÏÎÅ. 
> ìÏÇÉÞÅÓËÉ ×ËÌÀÞÁÅÛØ/ÏÔËÌÀÞÁÅÛØ ÃÅÌÙÅ ËÕÓËÉ SQL-ËÏÄÁ ÏÄÎÉÍ ÍÁÈÏÍ. õÄÏÂÎÏ, 
> ÏÄÎÉÍ ÓÌÏ×ÏÍ.

ëÌÉÅÎÔÅ 20 for select ... from T1 ÐÏÄÒÑÄ ÎÅ ÚÁÐÕÓÔÉÛØ ÄÁ ÅÝÅ ÅÓÌÉ ÎÕÖÎÙ 
ÓÏÒÔÉÒÏ×ËÉ ÇÒÕÐÐÉÒÏ×ËÉ ×ÏÚ×ÒÁÝÅÎÎÙÈ ÄÁÎÎÙÈ. òÅÞØ ÉÄÅÔ Ï ÐÒÉÍÅÎÅÎÉÉ × 
ÐÒÏÃÅÄÕÒÁÈ.

> á ÔÁË ÍÏÖÎÏ ÂÙÌÏ Â, ËÏÎÅÞÎÏ, É ÎÁ ÓÅÒ×ÅÒÅ ÒÁÚÒÕÌÉ×ÁÔØ, É ÎÅ ÐÒÉ×ÑÚÙ×ÁÔØÓÑ 
> Ë ÉÎÓÔÒÕÍÅÎÔÁÒÉÀ ÒÁÚÒÁÂÏÔËÉ, ÕÐÒÏÝÁÀÝÅÍÕ ÆÏÒÍÉÒÏ×ÁÎÉÅ ÚÁÐÒÏÓÏ× × run-time.
>
> îÅ ÐÏÎÑÔÎÏ ÔÏÌØËÏ ÐÒÏ "ÐÏÌÕÞÉÌ ÐÒÉÒÏÓÔ × ÐÒÏÉÚ×ÏÄÉÔÅÌØÎÏÓÔÉ ÂÏÌÅÅ 10 ÒÁÚ". 
> üÔÏ ÞÔÏ, ÔÏÌØËÏ ÚÁ ÓÞÅÔ ÐÅÒÅÎÏÓÁ ÌÏÇÉËÉ ÆÏÒÍÉÒÏ×ÁÎÉÑ ÄÉÎÁÍÉÞÅÓËÏÇÏ SQL Ó 
> ËÌÉÅÎÔÁ × EXECUTE STATEMENT ÎÁ ÓÅÒ×ÅÒ?

ðÒÉÒÏÓÔ ÂÙÌ ÐÏÌÏÞÉÎ ÚÁ ÓÞÅÔ ÐÅÒÅÐÉÓÉ ÐÒÏÃÅÄÕÒÙ × ËÏÔÏÒÏÊ ÇÅÎÅÒÉÔÓÑ ÓÔÒÏËÁ Á 
ÐÏÔÏÍ ×ÙÐÏÌÎÑÅÔÓÑ EXECUTE STATEMENT
×ÍÅÓÔÏ
(
(:X = 0) or
(:X = 1 and exists()) or
(:X = 2 and not exists())
)
ÏÓÔÁÅÔÓÑ ÏÄÎÏ ÉÚ ÔÒÅÈ ÕÓÌÏ×ÉÊ ×ÒÅÚÕÌØÔÁÔÅ Ñ×ÎÙÊ join ×ÍÅÓÔÏ ÐÏÓÔÒÏÞÎÏÇÏ 
exists. 



Ответить