CREATE OR REPLACE PACKAGE BODY "PKG_DIM_CAPITALMODE" IS
PROCEDURE p_dim_capitalmode
/*************************************************************************
*功能:
*创建日期:20170516
*创建人 :唐兵
*版本号:V1.0
*修改记录:
------------------------------------------------------------------------
*源表: comm_dict
*目标表:dim_capitalmode
*临时表:
*
*
*中间表:
*参数:批次号 PI_BATCHNO
* 源系统 PI_SRCSYS
*调用:
**************************************************************************/
(
pi_batchno IN NUMBER
,pi_srcsys IN VARCHAR2
) IS
v_proc_name VARCHAR2(100);
vn_proc_step pkg_globals.t_number; ---程序步骤
v_errcode pkg_globals.t_number; --错误码
v_errmsg pkg_globals.t_char4000; --错误消息内容
BEGIN
v_proc_name := 'PKG_DIM_CAPITALMODE';
--?????
MERGE INTO dim_capitalmode a
USING (SELECT dict_code AS bk_capitalmode
,dict_desc AS capitalmodename
,dk_system_of_upd AS srcsys
FROM comm_dict
WHERE dict_type LIKE 'DK_CAPITALMODE') b
ON (a.bk_capitalmode = b.bk_capitalmode)
WHEN MATCHED THEN
UPDATE
SET a.capitalmodename = b.capitalmodename
,a.srcsys = pi_srcsys
,a.batchno = pi_batchno
,a.updatetime = SYSDATE
WHEN NOT MATCHED THEN
INSERT
(bk_capitalmode
,capitalmodename
,srcsys
,batchno
,inserttime
,updatetime)
VALUES
(b.bk_capitalmode
,b.capitalmodename
,pi_srcsys
,pi_batchno
,SYSDATE
,SYSDATE);
COMMIT;
vn_proc_step := 1;
--写运行日志,运行结束
osp_wrt_etlrun_log(v_proc_name
,'R'
,'merge dim_capitalmode finish'
,'dim_capitalmode'
,NULL);
EXCEPTION
WHEN OTHERS THEN
v_errcode := SQLCODE;
v_errmsg := substr(SQLERRM
,1
,1000);
--触发错误
raise_application_error(-20040
,'Oracle SQL错误码:' || v_errcode || ',错误消息:' ||
v_errmsg || ' 出错的阶段为:' || vn_proc_step);
COMMIT;
END p_dim_capitalmode;
END pkg_dim_capitalmode;