由于物价局要求从2007年1月1日起所有卫生材料必须按新的标准进行作价,HIS目前不支持批量调价功能,所以编写此存储过程,本来想在一个存储过程中进行处理,测试发现数据未提交最后一个过程提不出数据,所以分开为2个.
[@more@]create or replace procedure zl_材料调价 as
v_收费价目_ID NUMBER;
v_NO VARCHAR2(10);
Cursor C_调价明细 is
select A.材料ID AS 收费细目ID,a.成本价,b.现价 as 原价,b.id as 原价ID,
B.收入项目ID,round(A.成本价/(100-a.指导差价率)*100,2) AS 调整价
from
材料特性 A,
收费价目 B
where a.材料ID=B.收费细目ID
and (b.终止日期 is null or b.终止日期>sysdate);
BEGIN
FOR v_调价明细 in C_调价明细 loop
Select 收费价目_id.Nextval Into v_收费价目_id From dual;
select nextno(9,0) into v_no from dual;
zl_收费价目_stop(v_调价明细.收费细目ID,SYSDATE);
zl_收费价目_insert(v_收费价目_id,v_调价明细.原价ID,v_调价明细.收费细目ID,v_调价明细.收入项目ID,
v_调价明细.原价,v_调价明细.调整价,NULL,NULL,'按2007年材料新物价标准调价',v_收费价目_ID,
'系统调价',SYSDATE,0,v_no,1);
END LOOP;
END zl_材料调价;
/
create or replace procedure zl_材料调价变动 as
Cursor C_调价明细 is
select A.材料ID AS 收费细目ID,a.成本价,b.现价 as 原价,b.id as 原价ID,
B.收入项目ID,round(A.成本价/(100-a.指导差价率)*100,2) AS 调整价
from
材料特性 A,
收费价目 B
where a.材料ID=B.收费细目ID
and (b.终止日期 is null or b.终止日期>sysdate);
BEGIN
FOR v_调价明细 in C_调价明细 loop
zl_材料收发记录_adjust(v_调价明细.原价ID,0);
END LOOP;
END zl_材料调价变动;
/
execute zl_材料调价;
execute zl_材料调价变动;
commit;
来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/8351093/viewspace-887828/,如需转载,请注明出处,否则将追究法律责任。
转载于:http://blog.itpub.net/8351093/viewspace-887828/