自己做的存储过程,使用了指针,并调用了外部了时间参数!

  • 来源: 编程中国 作者: 若水   2008-03-26/13:48
  • 因为涉及到工作的保密性,所以不能将全部代码发上来,请大家见谅!基本的功能是这样的:通过在程序中选择一个时间,根据这个时间来选择符合条件的数据,并将它插入某个表。插入的时候,要进行一个判断,如果这个记录已经存在了,就不插入,不存在的话就插入该数据,这个是用游标来实现的。



    CURSOR acc_c IS    /* 定义游标,从表中选出记录 */
         select  ……
         from    ……
         where
         /*原语句  a.DATE=732949 */
         to_date(1721425+a.DATE,'J')= to_date(ParaTime,'YYYY-MM-DD') and/*  将时间参数赋给选择语句*/
         ……
          
      
        acc_r acc_c%ROWTYPE;                /* 变量acc_r与acc_c类型相同*/
        AmountToMove NUMBER;


    BEGIN

      OPEN acc_c;
      LOOP
      
      FETCH acc_c INTO acc_r;
        EXIT WHEN acc_c%NOTFOUND;           /*记录不存在时退出*/
         begin
         insert into ……  /*记录存在时插入*/
         values ……
         EXCEPTION  
        when others  then null;
       end;  
        
       END LOOP ;
      commit;
       CLOSE acc_c ;   /*关闭指针*/
      

    /*修改表*/  
    update ……(
    select …… from(
       select ……
        from ……
         where
          ……
         /*原语句   a.DATE=732949 */
          to_date(1721425+a.DATE,'J')= to_date(ParaTime,'YYYY-MM-DD') and/*将时间参数赋给选择语句*/
          …… where ……
    where EndDate=to_date(ParaTime,'YYYY-MM-DD');
    /*原语句  where to_number(to_char(EndDate,'J'))=732949+1721425;*/

    commit;

        
    END;


    评论 {{userinfo.comments}}

    {{money}}

    {{question.question}}

    A {{question.A}}
    B {{question.B}}
    C {{question.C}}
    D {{question.D}}
    提交

    驱动号 更多