Даже если вы могли бы положить, что большой, 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;
Btw, это не выполняющее в SqlFiddle по какой-то причине. Как это бывает, я нашел совершенно хороший Oracle DB, сидящий в ящике под некоторыми старыми салфетками. Поэтому я могу проверить, что это хороший код.
Возможно, в коде есть другие символы, которые вы не видите - например, ведущие пробелы. –