批量更新人工费率

PROCEDURE UPDATE_PEOPLE_FATE AS
cursor resource_cur is
select trim(id) ID,
TRIM(organization_code) ORGANIZATION_CODE, --组织
TRIM(DEPT_CODE) DEPT_CODE, --部门
TRIM(RATE) RATE --费率
from CUX.UPDATE_PEOPLE_TEMP;
L_organization_id NUMBER := 0;
L_count NUMBER := 0;
V_ORG_COUNT NUMBER := 0;
E_CHECK EXCEPTION;
V_ERR_MESSAGE VARCHAR2(2000);
BEGIN
SELECT COUNT(DISTINCT CWI.ORGANIZATION_CODE)
INTO V_ORG_COUNT
FROM CUX.UPDATE_PEOPLE_TEMP CWI;
IF V_ORG_COUNT <> 1 THEN
insert into CUX_Blue_Gold (A, B, c)
VALUES ('人工费率导入', '-导入数据只能是同个组织-', to_char(sysdate, 'yyyy-mm-dd'));
V_ERR_MESSAGE := V_ERR_MESSAGE || '-导入数据只能是同个组织-';
RAISE E_CHECK;
END IF;
for resource_rec in resource_cur loop
BEGIN
select mco.ORGANIZATION_ID
INTO L_organization_id
from meg_cux_org_v mco
where organization_code = resource_rec.ORGANIZATION_CODE;
EXCEPTION
WHEN NO_DATA_FOUND THEN
insert into CUX_Blue_Gold
(A, B, c)
VALUES
('人工费率导入',
'组织【' || resource_rec.ORGANIZATION_CODE || '】不存在-',
to_char(sysdate, 'yyyy-mm-dd'));
commit;
V_ERR_MESSAGE := '组织【' || resource_rec.ORGANIZATION_CODE ||
'】不存在-';
RAISE E_CHECK;
END;
BEGIN
select count(*)
into l_count
from BOM_RESOURCES
where substr(RESOURCE_CODE, 1, 3) = resource_rec.DEPT_CODE
and organization_id = L_organization_id;
EXCEPTION
WHEN NO_DATA_FOUND THEN
insert into CUX_Blue_Gold
(A, B, c)
VALUES
('人工费率导入',
'部门【' || resource_rec.DEPT_CODE || '】不存在-',
to_char(sysdate, 'yyyy-mm-dd'));
commit;
V_ERR_MESSAGE := '部门【' || resource_rec.DEPT_CODE || '】不存在-';
RAISE E_CHECK;
END;

UPDATE CST_DEPARTMENT_OVERHEADS
SET rate_or_amount =round( resource_rec.RATE,6)
where OVERHEAD_ID IN
(select resource_id
from BOM_RESOURCES
where substr(RESOURCE_CODE, 1, 3) = resource_rec.DEPT_CODE
and organization_id = L_organization_id) --资源ID
and cost_type_id = 1001 --类型
and organization_id = L_organization_id; --组织ID

end loop;
commit;
END UPDATE_PEOPLE_FATE;

posted @ 2020-11-26 17:31  bule神  阅读(121)  评论(0编辑  收藏  举报