你好。考慮以下內容:PL/SQL評估排序
SQL> DECLARE
2 b1 BOOLEAN;
3 b2 BOOLEAN;
4 FUNCTION checkit RETURN BOOLEAN IS
5 BEGIN
6 dbms_output.put_line('inside checkit');
7 RETURN TRUE;
8 END checkit;
9
10 PROCEDURE outp(n VARCHAR2, p BOOLEAN) IS
11 BEGIN
12 IF p THEN
13 dbms_output.put_line(n||' is true');
14 ELSE
15 dbms_output.put_line(n||' is false');
16 END IF;
17 END;
18 BEGIN
19 b1 := TRUE OR checkit;
20 outp('b1',b1);
21 b2 := checkit OR TRUE;
22 outp('b2',b2);
23 END;
24/
b1 is true
inside checkit
b2 is true
PL/SQL procedure successfully completed
SQL>
請注意,OR語句的結果與訂單相關。如果我先放置函數調用,那麼函數將被執行,而不管另一個項的值如何。看起來,OR語句從左到右進行評估,直到獲得TRUE,此時處理停止並且結果爲TRUE。
我的問題是,這是我可以依靠的東西嗎?或者在未來的PL/SQL版本中這種行爲會改變嗎?如果它可以改變,是否有辦法強制我可以依賴的函數進行評估(無需創建另一個變量並使用單獨的賦值語句)?
PERFECTO。正是我在找的! – DCookie 2008-10-09 16:42:00
我的谷歌「pl/sql完整布爾評估」給了我完全相同的鏈接。 – JosephStyons 2008-10-09 16:42:23