Oracle PL/SQL可以将整数计算为布尔值吗?

Jer*_*nch 0 plsql oracle11g

特定 v_ssn_ind INTEGER := IF TRIM(p_ssn) IS NULL THEN 0 ELSE 1 END IF;

我知道我可以这样做: IF v_ssn_ind=1 THEN…

但我可以进行短路评估,即:IF v_ssn_ind THEN…

Jus*_*ave 6

首先,您所谈论的内容似乎与短路评估没有任何关系.代码就像是短路评估

IF( quick_condition AND slow_condition )
THEN
  <<do something>>
END IF;
Run Code Online (Sandbox Code Playgroud)

当且仅当初始快速条件评估为TRUE时,才评估第二个慢速条件.

其次,您对值的赋值在v_ssn_ind语法上无效.

第三,不,你不能说

IF <<integer variable>>
THEN
Run Code Online (Sandbox Code Playgroud)

因为这没有意义.什么值会评估为TRUE,哪些值会评估为FALSE?例如,如果0为FALSE且1为TRUE,那么17将转换为什么?

如果要声明某种指示符变量,通常使用BOOLEAN数据类型而不是整数是有意义的.如果你使用布尔值,那么你可以这样做

IF <<boolean variable>>
THEN
Run Code Online (Sandbox Code Playgroud)

因为这消除了歧义.但这并不比添加= TRUE到您的IF条件更快.