特定 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…?
首先,您所谈论的内容似乎与短路评估没有任何关系.代码就像是短路评估
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条件更快.