gpt4 book ai didi

oracle - PL/SQL 评估顺序

转载 作者:行者123 更新时间:2023-12-02 08:31:19 25 4
gpt4 key购买 nike

你好。考虑以下因素:

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 的 future 版本中是否会改变?如果它可以改变,有没有一种方法可以强制对我可以依赖的函数进行求值(无需创建另一个变量并使用单独的赋值语句)?

最佳答案

是的。 PL/SQL 执行short circuit evaluation从左到右的逻辑表达式。

关于oracle - PL/SQL 评估顺序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/188099/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com