ORACLE PROCEDURE存储过程学习2

 --企业基本业务信息,更新有效业务号字段,成链
  PROCEDURE SJBL_GXYXYWH(v_PRIPID IN VARCHAR2) AS

    TYPE T_DS IS TABLE OF VARCHAR2(24);
    r_ZCDJYWSEQ_DS T_DS;

    -- 动态seq
    v_SQL VARCHAR2(200);
  BEGIN
    
    --v_SQL := 'SELECT ZCDJYWSEQ FROM T_REG_QYJGJBXXYW WHERE PRIPID = :v_PRIPID ORDER BY APPRDATE';

    v_SQL := 'SELECT ZCDJYWSEQ FROM T_REG_SCZTZCDJYW WHERE APPRCONC = 1 AND DJYWLXSEQ IN (2001,2002,2003,2005,2006,2007,2008,2009,2011,2012) AND PRIPID = :v_PRIPID ORDER BY APPRDATE';
   
    EXECUTE IMMEDIATE v_SQL BULK COLLECT INTO r_ZCDJYWSEQ_DS USING v_PRIPID;

    FOR i IN 1..r_ZCDJYWSEQ_DS.COUNT LOOP

      IF i <> 1 THEN
      --更新企业基本信息中的有效业务号字段
       UPDATE T_REG_QYJGJBXXYW SET YXZCDJYWSEQ = r_ZCDJYWSEQ_DS(i-1) WHERE ZCDJYWSEQ = r_ZCDJYWSEQ_DS(i);
      /*现在系统没有将设立登记业务数据的有效业务号字段赋值*/
      --ELSE

      --  UPDATE T_REG_QYJGJBXXYW SET YXZCDJYWSEQ = r_ZCDJYWSEQ_DS(i) WHERE ZCDJYWSEQ = r_ZCDJYWSEQ_DS(i);
      
      --更新个体工商户基本信息中的有效业务号字段
      UPDATE T_REG_GTGSHJBXXYW SET YXZCDJYWSEQ = r_ZCDJYWSEQ_DS(i-1) WHERE ZCDJYWSEQ = r_ZCDJYWSEQ_DS(i);
      
      --更新集团基本信息中的有效业务号字段
      UPDATE T_REG_JTJBXXYW SET YXZCDJYWSEQ = r_ZCDJYWSEQ_DS(i-1) WHERE ZCDJYWSEQ = r_ZCDJYWSEQ_DS(i);
      END IF;

    END LOOP;

  END SJBL_GXYXYWH;

猜你喜欢

转载自sophyly.iteye.com/blog/2197003