我有PL / SQL代码,这不会进入IF块。为什么这不会进入IF Block?
感谢您的回复。
DateTime
答案 0 :(得分:6)
看起来你在比较空值时会被绊倒。 Oracle在后台将空字符串转换为Null。有关详细信息,请参阅here。
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;
答案 1 :(得分:2)
在PL / SQL和Oracle数据库中,空字符串(''
)与NULL相同,因此您必须使用IS NULL
测试而不是NULL来测试它= NULL
或= ''
。尝试运行以下内容:
declare
p_DataCenterID varchar2(50) := ''; -- NOTE: '' is the same as NULL
p_dcID varchar2(50);
BEGIN
dbms_output.put_line( 'test');
-- Check if DataCenterId is null
IF p_DataCenterID IS NULL 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;
/
这将打印
test
DataCenterID is empty
祝你好运。