Я создал одну хранимую процедуру . В этом сохраненном процессе я хочу, чтобы значение col1 & col2 соответствовало сотруднику, а затем вставляю уникальную запись сотрудника. Если не найдено, сопоставьте значение col1 , col2 & col3 с соответствием employee , затем введите значение , Если также не найден при совпадении всех этих столбцов, вставьте запись, используя другой столбец.
Также еще одна вещь, которую я хочу найти список значений, таких как emp_id , передав значение другого столбца, и если одна запись не может соответствовать , тогда сделайте emp_id как NULL .
create or replace procedure sp_ex
AS
empID_in varchar2(10);
fname_in varchar2(20);
lname_in varchar2(30);
---------
type record is ref cursor return txt%rowtype; --Staging table
v_rc record;
rc rc%rowtype;
begin
open v_rc for select * from txt;
loop
fetch v_rc into rc;
exit when v_rc%notfound;
loop
for i in 1..rc.count loop
select col1 from tbl1
Where EXISTS (select col1 from tbl1 where tbl1.col1 = rc.col1);
IF txt.col1 = rc.col1 AND txt.col2 = rc.col2 THEN
insert into main_table select distinct * from txt where txt.col2 = rc.col2;
ELSIF txt.col1 = rc.col1 AND txt.col2 = rc.col2 AND txt.col3 = rc.col3 THEN
insert into main_table select distinct * from txt where txt.col2 = rc.col2;
ELSE
insert into main_table select * from txt where txt.col4 = rc.col4;
end if;
end loop;
end loop;
close v_rc;
end sp_ex;
Я обнаружил ошибку при компиляции этой процедуры хранения PLS-00357: Table,View Or Sequence reference not allowed in this context
. Как решить эту проблему и как вставить значение из промежуточной в основную таблицу при использовании оператора CASE или IF ELSIF . Не могли бы вы помочь мне, чтобы я мог скомпилировать сохраненный процесс.