Ваш вопрос не ясен, но в угадывание от ввода и вывода, которые вы предоставили, я предполагаю, что правила для генерации вывода являются somthing по строкам ниже.
1), когда он начинает с 99 игнорировать его
2), когда она начинается с 05 заданной переменной и перейти к следующей строке.
3) когда он начинается с 10 заданной переменной и переходит к следующей строке.
4) когда он начинается с 30 вставок в таблицы с использованием переменных, которые вы установили в предыдущих двух шагах.
Если вышеуказанные правила верны, нижеследующее должно работать. Конечно, вам нужно будет заменить свои имена в таблице/поле. Если я неправильно понял ваши требования из предоставленных данных (скорее всего, так как это не очень понятно), это должно по крайней мере дать вам отправную точку для работы.
declare
cursor c_loops is
select column1 from table1;
v_col1 varchar2(10) default null;
v_col2 varchar2(10) default null;
v_col3 varcahr2(10) default null;
begin
for v_row in c_loops loop
case (substr(v_row.column1, 0, 2)
when '99' then
-- do nothing ignore row
null;
when '05' then
v_col1 := v_row.column1;
when '10' then
v_col2 := v_row.column1;
when '30' then
v_col3 := v_row.column1;
insert into table2 (col1, col2, col3) values (v_col1, v_col2, v_col3);
else
-- output some error here because you have unexpected input
null;
end case;
end loop;
end;
Посмотрите здесь http://stackoverflow.com/help/how-to-ask, а затем перепишите свой вопрос. Непонятно, что вы ищете. Прошу показать до и после примера. –
Почему, по-вашему, вам нужна хранимая процедура? –