为什么这段代码不会进入PL/SQL的IF块?

Rit*_*ita 1 oracle null plsql

我有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)

kev*_*sky 6

看起来你在比较空值时会被绊倒.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)