Мне нужно написать хранимую процедуру для нижеописанного требования.вставка plsql, обновление для существующего идентификатора
Желаемый результат: НАЛОГОВАЯ таблица
CATEGORY_ID TAX_PERCENTAGE FROM_DATE CREATE_DATE TAX_ID TO_DATE
-------------------------------------------------------------------------------------
1 10 4/1/2012 12/19/2013 8:54:20 PM 61 31-MAR-13
1 12.5 4/1/2013 12/19/2013 8:54:44 PM 62 31-dec-9998
Когда новый CATEGORY_ID скажем, 1 с tax_percentage 10 для бизнес-год (FROM_DATE) 4/1/2012 вставляется, то значение по умолчанию должно быть помещено в to_date колонке сказать 31-дец-9998. Когда я пытаюсь ввести тот же cat_id 1 с diff набором значений, скажем tax_percentage 12.5, на этот раз from_date 4/1/2013, тогда значение to_date должно быть (from_date-1) cat_id 1, tax_percent 10 и my to_date значение 10, cat_id = 1 должны быть обновлено с датой по умолчанию 31-декабрь-9998.something как этого
CREATE OR REPLACE procedure SCOTT.Sp_SaveNewTaxPercentage
(
iv_category_id number,
iv_tax_percentage varchar2,
iv_from_date varchar2,
iv_to_date varchar2 default '12/31/9998' ,
iv_created_date date,
ov_err_code out nocopy varchar2,
ov_err_msg out nocopy varchar2
)
is
lv_category_id varchar2(25);
LV_TO_DATE varchar2(25);
lv_cat_id varchar2(12);
begin
ov_err_code:=0;
for J in (SELECT CATEGORY_ID,FROM_DATE FROM TAX_P WHERE CATEGORY_ID =IV_CATEGORY_ID)
loop
SELECT to_date(iv_from_date,'dd/mm/yyyy') -1 INTO LV_TO_DATE FROM DUAL;
lv_cat_id := J.CATEGORY_ID;
end loop;
update tax_p set TO_DATE=LV_TO_DATE where CATEGORY_ID =lv_cat_id;
commit;
IF lv_cat_id IS NULL THEN
LV_TO_DATE := iv_to_Date;
END IF;
insert into tax_p(TAX_ID , CATEGORY_ID ,TAX_PERCENTAGE, FROM_DATE ,TO_DATE,CREATE_DATE)
values(tax_seq.nextval,iv_category_id,iv_tax_percentage,iv_from_date,LV_TO_DATE,sysdate);
select 'Successfully Saved' into ov_err_msg from dual;
commit;
Exception
when others then
rollback;
ov_err_code:=1;
ov_err_msg:='Error while saving'||SQLERRM;
end Sp_SaveNewTaxPercentage;
/
show errors;
Итак, в чем вопрос? –
Я хочу обновить столбец TO_DATE col 2, т. Е. CATEGORY_ID 1 TAX_PERCENTAGE 12.5 со значением даты по умолчанию, в то же время я хочу изменить столбец to_date col 1, т.е. CATEGORY_ID 1 TAX_PERCENTAGE 10 с col2 from_date -1 – user3099684
любая помощь по этому вопросу оценили – user3099684