Я не уверен, что процедура должна делать после того, как она "помечает" компанию как федеральную, а не как. Вместо этого я написал бы ее как функцию, как показано ниже (но вы можете легко использовать большую часть кода в процедуре, если это необходимо).
Затем я продемонстрирую, как функция может использоваться непосредственно в SQL. Вы также можете использовать его в PL / SQL, если это необходимо, но в большинстве случаев это не так. Примечание: та же идея может быть реализована исключительно в SQL, что приводит к более быстрому выполнению, так как вам совсем не нужен PL / SQL. Важно - даже в простом SQL это должно быть реализовано через semi соединение, как я продемонстрировал, для более быстрого выполнения.
Setup :
create table tbl_fed_key (key_1 varchar2(200));
insert into tbl_fed_key
select 'ARMY' from dual union all
select 'FEDERAL' from dual union all
select 'AIR FORCE' from dual union all
select 'VETERANS' from dual union all
select 'HOMELAND SECURITY' from dual union all
select 'INDIAN HOSPITAL' from dual union all
select 'WILL ROGERS' from dual
;
commit;
Код функции :
create or replace function is_federal_institution(company_name varchar2)
return varchar
deterministic
as
is_fed varchar2(1);
begin
select case when exists ( select key_1
from tbl_fed_key
where instr(upper(company_name), upper(key_1)) > 0
)
then 'Y' else 'N' end
into is_fed
from dual;
return is_fed;
end;
/
SQL тест :
with
inputs (str) as (
select 'Joe and Bob Army Supply Store' from dual union all
select 'Mary Poppins Indian Hospital' from dual union all
select 'Bridge Association of NYC' from dual union all
select 'Will Rogers Garden' from dual union all
select 'First Federal Bank NA' from dual
)
select str, is_federal_institution(str) as is_federal
from inputs
;
STR IS_FEDERAL
------------------------------ ----------
Joe and Bob Army Supply Store Y
Mary Poppins Indian Hospital Y
Bridge Association of NYC N
Will Rogers Garden Y
First Federal Bank NA Y
Как видите, я бросил в нескольких ложных срабатываниях - для иллюстрации важного факта, что это "технологическое" решение является лишь частичным. Человек все равно должен будет просмотреть отдельные попадания, если важна точность.