我有以下的代碼:Oracle中有CASE語句的錯誤?
IF i.cd_ver IS NULL OR i.cd_ver = '0'
THEN
--Set value of v_cd_ver
v_cd_ver := CASE i.cd_ver
WHEN NULL
THEN '9'
WHEN '0'
THEN '10'
END;
END if;
「i」是在參照外部表光標找到記錄。外部表中的值爲NULL或空白:
SELECT cd_ver FROM table_xtl WHERE cd_id = '123';
..這返回一行空白。
但是,v_cd_ver
未按預期設置爲'9'
。我的解決方法是使用IF THEN
聲明,而且它的工作原理。爲什麼CASE
聲明不能按預期工作?
UPDATE: 當我試圖不要使用以下它的工作:
v_cd_ver := CASE
WHEN i.cd_ver IS NULL
THEN '9'
WHEN i.cd_ver = '0'
THEN '10'
END;
這是bug還是有一些原因,前者沒有工作?
我做到了,那也沒用。 – user3224907
更新爲IS NULL – NikNik
@ user3224907 - 在Oracle中與NULL相同。 (SQL標準不兼容的......在他們的防守,約「」和NULL甲骨文的事情是之前有一個標準出臺。) – mathguy