我有PL/SQL代码以下,这不是进入IF块.为什么不进入IF Block?
感谢您的回复.
DECLARE
p_datacenterid VARCHAR2(50) := '';
p_dcid VARCHAR2(50);
BEGIN
dbms_output.put_line('test');
-- Check if DataCenterId is null
IF nvl(p_datacenterid, '') = '' THEN
dbms_output.put_line('DataCenterID is empty');
SELECT datacenterid
INTO p_dcid
FROM pod_tab
WHERE url = 'dit3.ezlm.adp.com'
AND rownum = 1;
END IF;
END;
/
Run Code Online (Sandbox Code Playgroud)
看起来你在比较空值时会被绊倒.Oracle在后台将空字符串转换为Null.详情请见此处.
IF语句最终解析为IF null = null,这永远不会成立.
像这样的东西会起作用
IF p_DataCenterID IS NOT NULL THEN
--assert the values are within a range
ELSE
--look up the value
END IF;
Run Code Online (Sandbox Code Playgroud)