plpgsql 中的 Continue 语句不起作用
Continue statement in plpgsql doesn't work
我想继续输出,为什么不行?
set serveroutput on;
declare
code number(2) := 7;
begin
if not code = 3 or not code = 7 then
dbms_output.put_line('GO TO ERRORPAGE');
else
dbms_output.put_line('CONTINUE...');
end if;
end;
您的 if
语句的计算结果将始终为 true
,因为代码永远不会同时为 3 和 7。您可能想更改为:
not(code = 3 or code = 7)
为了进一步阐述,让我们看几个例子。首先让我们根据您的示例假设 code := 7
。在这种情况下,您的 if 语句的两个部分评估如下:
not code = 3 --> True
not code = 7 --> False
由于您至少满足了一个条件,因此 or
语句的计算结果为真。
其次,假设code := 3
。在这种情况下,您的 if
条件评估为:
not code = 3 --> False
not code = 7 --> True
你的 or
语句再次计算为 True
。
现在看看 code
不同于 3 或 7 的最终情况,假设 code := 5
,您的条件评估如下:
not code = 3 --> True
not code = 7 --> True
在这种情况下,您的 or
条件也将是 True
。
我想继续输出,为什么不行?
set serveroutput on;
declare
code number(2) := 7;
begin
if not code = 3 or not code = 7 then
dbms_output.put_line('GO TO ERRORPAGE');
else
dbms_output.put_line('CONTINUE...');
end if;
end;
您的 if
语句的计算结果将始终为 true
,因为代码永远不会同时为 3 和 7。您可能想更改为:
not(code = 3 or code = 7)
为了进一步阐述,让我们看几个例子。首先让我们根据您的示例假设 code := 7
。在这种情况下,您的 if 语句的两个部分评估如下:
not code = 3 --> True
not code = 7 --> False
由于您至少满足了一个条件,因此 or
语句的计算结果为真。
其次,假设code := 3
。在这种情况下,您的 if
条件评估为:
not code = 3 --> False
not code = 7 --> True
你的 or
语句再次计算为 True
。
现在看看 code
不同于 3 或 7 的最终情况,假设 code := 5
,您的条件评估如下:
not code = 3 --> True
not code = 7 --> True
在这种情况下,您的 or
条件也将是 True
。