하디. 다음을 고려하십시오.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의 향후 릴리스에서이 동작이 변경 될 수 있습니까? 변수가 변경 될 수있는 경우, 다른 변수를 작성하지 않고 별도의 대입 문을 사용하지 않고도 신뢰할 수있는 함수를 평가할 수있는 방법이 있습니까?
퍼펙 사실이다. 그냥 내가 뭘 찾고 있었는지! – DCookie
"pl/sql complete boolean evaluation"에 대한 Google에서 정확히 동일한 링크를 제공했습니다. – JosephStyons
그게 내가 시도한 것보다 나은 검색입니다 : "PLSQL force evaluation". 감사! – DCookie