oracle – PL / SQL评估订单
发布时间:2021-04-02 00:01:24 所属栏目:站长百科 来源:网络整理
导读:你好.考虑以下: 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
|
你好.考虑以下: 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的未来版本中发生变化?如果它可以改变,有没有办法强制我可以依赖的函数被评估(不创建另一个变量并使用单独的赋值语句)? 解决方法是. PL / SQL从左到右执行 short circuit evaluation个逻辑表达式.(编辑:晋中站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |


