1. 程式人生 > >達夢數據庫存儲過程及存儲過程調用

達夢數據庫存儲過程及存儲過程調用

程序 auth ger result 時間 post manage building 計時

/***Manager***/CREATE OR REPLACE PROCEDURE "GZAPP_09"."SP_OLAP_V_BUILDINGTYPE"("P_DATE" IN DATE)
AUTHID DEFINER
IS
/*=============================================================
*功能說明:房屋類型分析(高層樓宇,多層樓宇,臨時棚屋,其它)
* 統計市級別,行政區,街鎮,居委會
* 入口參數:統計時間
* 出口參數:無
* 創建人及時間: dfb 20160922
* 修改人及時間:
*============================================================*/
v_sqlcode number;
v_sqlerrm varchar2(4000);
v_begintime varchar2(20);
v_endtime varchar2(20);
v_fwdlx varchar2(10);
v_sql varchar2(5000);
BEGIN
v_begintime:=to_char(sysdate,‘yyyy/mm/dd hh24:mi:ss‘);
EXECUTE IMMEDIATE ‘TRUNCATE TABLE TN_OLAP_V_BUILDINGTYPE_TMP1‘;
delete from OLAP_V_BUILDINGTYPE;
commit;

insert into TN_OLAP_V_BUILDINGTYPE_TMP1(
TJQY,
QYDM,
FWLX01 ,
FWLX02 ,
FWLX03 ,
FWLX04 )

SELECT TJQY,
qydm,
FWLXGCLY FWLX01,--高層樓宇類型棟數
FWLXDCLY FWLX02,--低層樓宇類型棟數
FWLXLSPW FWLX03,--臨時棚屋類型棟數
FWLXQT FWLX04 --其他類型棟數
FROM T_STAT_CZWD
where tjrq=p_date
and bblx=‘M‘;
COMMIT;

-- 01-04類房屋棟類型
for fwdlx in 1 .. 4 loop

if fwdlx < 10 then
v_fwdlx := ‘0‘ || fwdlx;
else
v_fwdlx := fwdlx;
end if;

v_sql :=‘INSERT INTO OLAP_V_BUILDINGTYPE
( BUITYPEDM,--房屋棟類型代碼
BUITYPEMC,--房屋棟類型名稱
TJQY,--統計區域
QYDM,--區域代碼
QYMC,--區域名稱
XZQDM,--行政區代碼
XZQ, --行政區名稱
JZDM ,--街鎮代碼
JZ, --街鎮名稱
JWHDM,--居委會代碼
JWH , --居委會名稱
AMOUNT--數量
)
select t.FWDLX,
a.mc,
t.tjqy,
t.qydm,
case when tjqy=‘‘SHIJB‘‘ THEN ‘‘全市‘‘
when tjqy=‘‘XZQ‘‘ then b.xzq
when tjqy=‘‘JZ‘‘ THEN b.jz
when tjqy=‘‘JWH‘‘ THEN b.jwh
end qymc,
b.xzqdm,
b.xzq,
b.jzdm,
b.jz ,
b.jwhdm,
b.jwh,
t.amount
from (select ‘‘‘||v_fwdlx||‘‘‘ FWDLX,qydm ,FWLX‘||v_fwdlx||‘ amount,tjqy from TN_OLAP_V_BUILDINGTYPE_TMP1) t,
--(select * from t_xtzd where dmlx=‘‘FWLX‘‘) a,
(select BUITYPEDM dm,BUITYPEMC mc,id from OLAP_MEASURE_BUILDINGTYPE) a,--把系統字典表改成這個維表 修改於2016.10.11 dfb
OLAP_V_LOCALAREA b
where t.FWDLX=a.id
and t.qydm=b.qydm ‘;
execute immediate v_sql;
end loop;

v_endtime:=to_char(sysdate,‘yyyy/mm/dd hh24:mi:ss‘);
--記錄程序執行開始時間和結束時間
insert into T_LOG(pro_name,tj_date,begin_time,end_time,run_result) values(‘SP_OLAP_V_BUILDINGTYPE‘,p_date,v_begintime,v_endtime,‘Y‘);
commit;
--異常處理
EXCEPTION
WHEN OTHERS THEN
ROLLBACK;
v_sqlcode :=sqlcode;
v_sqlerrm :=substr(sqlerrm, 1, 2000);
insert into T_LOG(pro_name,err_time,err_code,err_infor,run_result,tj_date) values(‘SP_OLAP_V_BUILDINGTYPE‘,sysdate,v_sqlcode,v_sqlerrm,‘N‘,p_date);
commit;
DBMS_OUTPUT.PUT_LINE(SUBSTR(SQLERRM, 1, 200));

END SP_OLAP_V_BUILDINGTYPE;

------------------------------------------------存儲過程調用-----------------------------------------------

/***Manager***/CREATE OR REPLACE PROCEDURE "GZAPP_09"."PKG_STAT_DAY"("P_DATE" IN DATE)
AUTHID DEFINER

IS
/*=============================================================
*功能說明:日報表調度匯總
* 入口參數:統計時間
* 出口參數:無
* 創建人及時間: dfb 20160906
* 修改人及時間:
*============================================================*/
v_sqlcode number;
v_sqlerrm varchar2(4000);
v_begintime varchar2(20);
v_endtime varchar2(20);
BEGIN

v_begintime:=to_char(sysdate,‘yyyy/mm/dd hh24:mi:ss‘);

SP_OLAP_V_BUILDINGTYPE(p_date);
v_endtime:=to_char(sysdate,‘yyyy/mm/dd hh24:mi:ss‘);
--記錄程序執行開始時間和結束時間
insert into T_LOG(pro_name,tj_date,begin_time,end_time,run_result) values(‘PKG_STAT_DAY‘,p_date,v_begintime,v_endtime,‘Y‘);
commit;
--異常處理
EXCEPTION
WHEN OTHERS THEN
ROLLBACK;
v_sqlcode :=sqlcode;
v_sqlerrm :=substr(sqlerrm, 1, 2000);
insert into T_LOG(pro_name,err_time,err_code,err_infor,run_result,tj_date) values(‘PKG_STAT_DAY‘,sysdate,v_sqlcode,v_sqlerrm,‘N‘,p_date);
commit;
DBMS_OUTPUT.PUT_LINE(SUBSTR(SQLERRM, 1, 200));

END PKG_STAT_DAY;

達夢數據庫存儲過程及存儲過程調用