2 Temmuz 2007 Pazartesi

Kestirme Değerlendirme (Short-Circuit Evaluation)

PL/SQL 'de AND ve OR mantık operatörleri çalışırken belli durumlar için sadece ilk elemana bakarlar, ikinci elamanı göz ardı edip, değerlendirmezler, şöyle ki:
AND 'in TRUE döndürmesi için her iki elemanın da TRUE olması gerekir.

Eğer ilk eleman FALSE ise sonucun FALSE çıkacağı bellidir, bu durumda PL/SQL ikinci elemana hiç bakmayacaktır. OR için ise sonucun TRUE çıkması için iki elemanın sadece birinin TRUE olması yeterlidir. OR 'un ilk elemanı TRUE ise PL/SQL ikinci elemana hiç bakmayacaktır çünkü sonucun TRUE çıkacağı ilk elemandan bellidir.

PL/SQL 'in bu kestirme değerlendirme özelliğinden dolayı bazı hatalı yazımlarda hata mesajı ile karşılaşılmayabilir. Örneğin aşağıdaki örnekte OR operatörünün ikinci elemanında sıfıra bölme hatası olduğu halde bir hata mesajı alınmaz:

DECLARE
...
on_hand INTEGER;
on_order INTEGER;
BEGIN
...
IF (on_hand = 0) OR ((on_order / on_hand) < 5) THEN
...
END IF;
END;

Hiç yorum yok: