>> 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.