oracle存储过程处理并发,存储过程并发导致的问题。

本帖最后由 taotao_li 于 2016-2-29 18:09 编辑

CREATE OR REPLACE PACKAGE BODY BB_AJCL_GBQ_1 AS

-- AUTHOR  :

-- CREATED :

-- PURPOSE :

-- MODIFY  : NULL

-- PUBLIC TYPE DECLARATIONS:

PROCEDURE BB_AJCL_GBQ_1(P_TJND VARCHAR2, C OUT CUR) AS

V_JZMJ NUMBER;

CURSOR C_CUR IS

SELECT FGS,MAX(YQT_ID) YQT_ID FROM AJCL04G WHERE TJND = P_TJND  GROUP BY FGS;

BEGIN

DELETE TEMP_AJCL_GBQ_1 COMMIT;

----1============已开发==合计============

FOR F IN C_CUR LOOP

INSERT INTO TEMP_AJCL_GBQ_1(

FGS,CLLB,JZMJ,YYDZCLZL,RJQDZCL,YYJSKCCLZL,RJQJSKCCL,YYJJKCCLZL,RJQJJKCCL,CYYJJKCCLZL,

CRJQJJKCCL,YYNCLZL,RJQNCL,YYLJCLZL,RJQLJCL,SYYJJKCCLZL,SRJQJJKCCL,SYYJSKCCLZL,

SRJQJSKCCL,YQT_ID,XH)

SELECT F.FGS,'已开发',B.JZMJ,

A.NXYDZCLZL,A.GQDZCL,B.NXYJSKCCLZL,B.TRQJSKCCL,B.NXYJJKCCLZL,B.TRQJJKCCL,

/*DECODE(NVL(A.NXYJSKCCLZL,0)-NVL(A.NXYJJKCCLZL,0),0,NULL,*/

NVL(B.NXYJSKCCLZL,0)-NVL(B.NXYJJKCCLZL,0)/*)*/,NVL(B.TRQJSKCCL,0)-NVL(B.TRQJJKCCL,0),

NVL(B.NXYNCZL,0)+NVL(D.NXYNCZL,0), NVL(B.TRQNCL,0)+NVL(D.TRQNCL,0),

NVL(B.NXYLCZL,0)+NVL(D.NXYLCZL,0), NVL(B.TRQLJCL,0)+NVL(D.TRQLJCL,0),

NVL(B.NXYJJKCCLZL,0)-(NVL(B.NXYLCZL,0)+NVL(D.NXYLCZL,0)),

NVL(B.TRQJJKCCL,0)-(NVL(B.TRQLJCL,0)+NVL(D.TRQLJCL,0)),

NVL(B.NXYJSKCCLZL,0)-(NVL(B.NXYLCZL,0)+NVL(D.NXYLCZL,0)),

NVL(B.TRQJSKCCL,0)-(NVL(B.TRQLJCL,0)+NVL(D.TRQLJCL,0)),

F.YQT_ID,1

FROM tab_ajcl01 A,

tab_ajcl02 B,

tab_ajcl03 D

WHERE A.FGS = B.FGS(+) AND A.FGS = D.FGS(+);

COMMIT;

----2============未开发==合计============

INSERT INTO TEMP_AJCL_GBQ_1(

FGS,CLLB,JZMJ,YYDZCLZL,RJQDZCL,YYJSKCCLZL,RJQJSKCCL,YYJJKCCLZL,RJQJJKCCL,CYYJJKCCLZL,

CRJQJJKCCL,YYNCLZL,RJQNCL,YYLJCLZL,RJQLJCL,SYYJJKCCLZL,SRJQJJKCCL,SYYJSKCCLZL,

SRJQJSKCCL,YQT_ID,XH)

SELECT F.FGS,'未开发',B.JZMJ,

A.NXYDZCLZL,A.GQDZCL,B.NXYJSKCCLZL,B.TRQJSKCCL,B.NXYJJKCCLZL,B.TRQJJKCCL,

NVL(B.NXYJSKCCLZL,0)-NVL(B.NXYJJKCCLZL,0),NVL(B.TRQJSKCCL,0)-NVL(B.TRQJJKCCL,0),

NVL(B.NXYNCZL,0)+NVL(D.NXYNCLZL,0), NVL(B.TRQNCL,0)+NVL(D.TRQNCL,0),

NVL(B.NXYLCZL,0)+NVL(D.NXYLJCLZL,0), NVL(B.TRQLJCL,0)+NVL(D.TRQLJCL,0),

NVL(B.NXYJJKCCLZL,0)-(NVL(B.NXYLCZL,0)+NVL(D.NXYLJCLZL,0)),

NVL(B.TRQJJKCCL,0)-(NVL(B.TRQLJCL,0)+NVL(D.TRQLJCL,0)),

NVL(B.NXYJSKCCLZL,0)-(NVL(B.NXYLCZL,0)+NVL(D.NXYLJCLZL,0)),

NVL(B.TRQJSKCCL,0)-(NVL(B.TRQLJCL,0)+NVL(D.TRQLJCL,0)),

F.YQT_ID,2

FROM tab_ajcl01 A,

tab_ajcl02 B,

tab_ajcl03 D

WHERE A.FGS = B.FGS(+) AND A.FGS = D.FGS(+);

COMMIT;

V_JZMJ:=0;

SELECT SUM(JZMJ) INTO V_JZMJ FROM tab_ajcl01

WHERE SJLB  IN (0,1) AND TJND = P_TJND AND FGS = F.FGS;

----3============合  计==合计============

INSERT INTO TEMP_AJCL_GBQ_1(

FGS,CLLB,JZMJ,YYDZCLZL,RJQDZCL,YYJSKCCLZL,RJQJSKCCL,YYJJKCCLZL,RJQJJKCCL,CYYJJKCCLZL,

CRJQJJKCCL,YYNCLZL,RJQNCL,YYLJCLZL,RJQLJCL,SYYJJKCCLZL,SRJQJJKCCL,SYYJSKCCLZL,

SRJQJSKCCL,YQT_ID,XH)

SELECT F.FGS,'合计',/*SUM(JZMJ)*/V_JZMJ,SUM(YYDZCLZL),SUM(RJQDZCL),

SUM(YYJSKCCLZL),SUM(RJQJSKCCL),SUM(YYJJKCCLZL),SUM(RJQJJKCCL),

NVL(SUM(YYJSKCCLZL),0)-NVL(SUM(YYJJKCCLZL),0),

NVL(SUM(RJQJSKCCL),0)-NVL(SUM(RJQJJKCCL),0),

SUM(YYNCLZL),SUM(RJQNCL),SUM(YYLJCLZL),SUM(RJQLJCL),

NVL(SUM(YYJJKCCLZL),0)-NVL(SUM(YYLJCLZL),0),

NVL(SUM(RJQJJKCCL),0)-NVL(SUM(RJQLJCL),0),

NVL(SUM(YYJSKCCLZL),0)-NVL(SUM(YYLJCLZL),0),

NVL(SUM(RJQJSKCCL),0)-NVL(SUM(RJQLJCL),0),F.YQT_ID,3

FROM TEMP_AJCL_GBQ_1 WHERE FGS=F.FGS;

COMMIT;

END LOOP;

----1============中国==已开发============

INSERT INTO TEMP_AJCL_GBQ_1(

FGS,CLLB,JZMJ,YYDZCLZL,RJQDZCL,YYJSKCCLZL,RJQJSKCCL,YYJJKCCLZL,RJQJJKCCL,CYYJJKCCLZL,

CRJQJJKCCL,YYNCLZL,RJQNCL,YYLJCLZL,RJQLJCL,SYYJJKCCLZL,SRJQJJKCCL,SYYJSKCCLZL,

SRJQJSKCCL,YQT_ID,XH)

SELECT '中国','已开发',SUM(JZMJ),SUM(YYDZCLZL),SUM(RJQDZCL),

SUM(YYJSKCCLZL),SUM(RJQJSKCCL),SUM(YYJJKCCLZL),SUM(RJQJJKCCL),

NVL(SUM(YYJSKCCLZL),0)-NVL(SUM(YYJJKCCLZL),0),

NVL(SUM(RJQJSKCCL),0)-NVL(SUM(RJQJJKCCL),0),

SUM(YYNCLZL),SUM(RJQNCL),SUM(YYLJCLZL),SUM(RJQLJCL),

NVL(SUM(YYJJKCCLZL),0)-NVL(SUM(YYLJCLZL),0),

NVL(SUM(RJQJJKCCL),0)-NVL(SUM(RJQLJCL),0),

NVL(SUM(YYJSKCCLZL),0)-NVL(SUM(YYLJCLZL),0),

NVL(SUM(RJQJSKCCL),0)-NVL(SUM(RJQLJCL),0),0,1

FROM TEMP_AJCL_GBQ_1 WHERE CLLB='已开发';

COMMIT;

----2============中国==未开发============

INSERT INTO TEMP_AJCL_GBQ_1(

FGS,CLLB,JZMJ,YYDZCLZL,RJQDZCL,YYJSKCCLZL,RJQJSKCCL,YYJJKCCLZL,RJQJJKCCL,CYYJJKCCLZL,

CRJQJJKCCL,YYNCLZL,RJQNCL,YYLJCLZL,RJQLJCL,SYYJJKCCLZL,SRJQJJKCCL,SYYJSKCCLZL,

SRJQJSKCCL,YQT_ID,XH)

SELECT '中国石油','未开发',SUM(JZMJ),SUM(YYDZCLZL),SUM(RJQDZCL),

SUM(YYJSKCCLZL),SUM(RJQJSKCCL),SUM(YYJJKCCLZL),SUM(RJQJJKCCL),

NVL(SUM(YYJSKCCLZL),0)-NVL(SUM(YYJJKCCLZL),0),

NVL(SUM(RJQJSKCCL),0)-NVL(SUM(RJQJJKCCL),0),

SUM(YYNCLZL),SUM(RJQNCL),SUM(YYLJCLZL),SUM(RJQLJCL),

NVL(SUM(YYJJKCCLZL),0)-NVL(SUM(YYLJCLZL),0),

NVL(SUM(RJQJJKCCL),0)-NVL(SUM(RJQLJCL),0),

NVL(SUM(YYJSKCCLZL),0)-NVL(SUM(YYLJCLZL),0),

NVL(SUM(RJQJSKCCL),0)-NVL(SUM(RJQLJCL),0),0,2

FROM TEMP_AJCL_GBQ_1 WHERE CLLB='未开发';

COMMIT;

----3============中国==合  计============

INSERT INTO TEMP_AJCL_GBQ_1(

FGS,CLLB,JZMJ,YYDZCLZL,RJQDZCL,YYJSKCCLZL,RJQJSKCCL,YYJJKCCLZL,RJQJJKCCL,CYYJJKCCLZL,

CRJQJJKCCL,YYNCLZL,RJQNCL,YYLJCLZL,RJQLJCL,SYYJJKCCLZL,SRJQJJKCCL,SYYJSKCCLZL,

SRJQJSKCCL,YQT_ID,XH)

SELECT '中国石油','合计',SUM(JZMJ),SUM(YYDZCLZL),SUM(RJQDZCL),

SUM(YYJSKCCLZL),SUM(RJQJSKCCL),SUM(YYJJKCCLZL),SUM(RJQJJKCCL),

NVL(SUM(YYJSKCCLZL),0)-NVL(SUM(YYJJKCCLZL),0),

NVL(SUM(RJQJSKCCL),0)-NVL(SUM(RJQJJKCCL),0),

SUM(YYNCLZL),SUM(RJQNCL),SUM(YYLJCLZL),SUM(RJQLJCL),

NVL(SUM(YYJJKCCLZL),0)-NVL(SUM(YYLJCLZL),0),

NVL(SUM(RJQJJKCCL),0)-NVL(SUM(RJQLJCL),0),

NVL(SUM(YYJSKCCLZL),0)-NVL(SUM(YYLJCLZL),0),

NVL(SUM(RJQJSKCCL),0)-NVL(SUM(RJQLJCL),0),0,3

FROM TEMP_AJCL_GBQ_1 WHERE CLLB='合计';

COMMIT;

OPEN C FOR

SELECT A.FGS,

CLLB,

NULLIF(JZMJ,0) JZMJ,

NULLIF(RJQDZCL,0) RJQDZCL,

NULLIF(YYDZCLZL,0) YYDZCLZL,

NULLIF(RJQJSKCCL,0) RJQJSKCCL,

NULLIF(YYJSKCCLZL,0) YYJSKCCLZL,

NULLIF(RJQJJKCCL,0) RJQJJKCCL,

NULLIF(YYJJKCCLZL,0) YYJJKCCLZL,

NULLIF(CRJQJJKCCL,0) CRJQJJKCCL,

NULLIF(CYYJJKCCLZL,0) CYYJJKCCLZL,

ROUND(NULLIF(RJQNCL,0),2) RJQNCL,

ROUND(NULLIF(YYNCLZL,0),2) YYNCLZL,

ROUND(NULLIF(RJQLJCL,0),2) RJQLJCL,

ROUND(NULLIF(YYLJCLZL,0),2) YYLJCLZL,

ROUND(NULLIF(SRJQJJKCCL,0),2) SRJQJJKCCL,

ROUND(NULLIF(SYYJJKCCLZL,0),2) SYYJJKCCLZL,

ROUND(NULLIF(SRJQJSKCCL,0),2) SRJQJSKCCL,

ROUND(NULLIF(SYYJSKCCLZL,0),2) SYYJSKCCLZL

FROM TEMP_AJCL_GBQ_1 A,TEMP_FGSMC T WHERE A.FGS = T.FGS(+)

ORDER BY T.XH, A.XH;

END;

END BB_AJCL_GBQ_1;

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值