即使你可以把那麼大,honkin' select
在那裏,我會建議保持if
聲明簡單的可維護性。這個工程是一個更加清晰,特別是如果你添加明智的評論:
create table XYZ(
REF_REC_TYPE int,
DEL_FLG char(1),
REF_CODE int
);
insert into XYZ
select 39, 'Y', 28 from dual union all
select 39, 'Y', 29 from dual union all
select 39, 'Y', 30 from dual union all
select 39, 'N', 31 from dual union all
select 39, 'N', 32 from dual union all
select 39, 'N', 33 from dual union all
select 39, 'Y', 34 from dual union all
select 39, 'Y', 35 from dual union all
select 39, 'Y', 36 from dual;
DECLARE
int_rate INT := 0;
local_type_advances INT := 32;
found INT;
BEGIN
-- See if we have any whatever
SELECT count(*)
INTO found
FROM XYZ
WHERE REF_REC_TYPE = 39
AND DEL_FLG = 'N'
AND REF_CODE = local_type_advances;
IF int_rate = 0
AND found > 0 THEN
dbms_output.put_line('True: ' || found);
ELSE
dbms_output.put_line('False: ' || found);
END IF;
END;
順便說一句,這並不在SqlFiddle出於某種原因執行。碰巧,我發現一個完美的Oracle DB在一些舊餐巾紙下放在抽屜裏。所以我可以驗證這是很好的代碼。
也許在代碼中還有其他字符,例如,您沒有看到 - 前導空格。 – 2014-08-28 12:08:00