zoukankan      html  css  js  c++  java
  • 博主一个删除download记录的小function,注意其中bulk collect into跟forall的利用.

       PROCEDURE delete_route_download_bol (device_id_in    VARCHAR2,
                                            bol_id_in       INTEGER)
       AS
          TYPE t_rowids
          IS
             TABLE OF ROWID
                INDEX BY PLS_INTEGER;

          v_rowids       t_rowids;

          TYPE t_routedownload IS TABLE OF tms.tms_route_download%ROWTYPE;

          download_rec   t_routedownload:=new t_routedownload(null,null,null,null,null,null);
       BEGIN
          SELECT   ROWID
            BULK   COLLECT
            INTO   v_rowids

            FROM   (  SELECT   ROWID
                        FROM   tms.tms_route_download trd
                       WHERE   UPPER (device_id_in) LIKE 'DEV%'
                               AND device_id = device_id_in
                               AND EXISTS
                                     (SELECT   1
                                        FROM   tms_route_header rh
                                       WHERE   rh.truck_route_instance_id =
                                                  trd.truck_route_instance_id
                                               AND rh.bill_of_lading_id = bol_id_in)
                     );

          FORALL i IN 1 .. v_rowids.COUNT
                   DELETE FROM   tms.tms_route_download
                         WHERE   ROWID = v_rowids (i)
                     RETURNING   truck_route_instance_id,
                                 device_id,
                                 download_date,
                                 bill_of_lading_id,
                                 driver_name,
                                 confirm_date
             BULK COLLECT INTO   download_rec;

          IF download_rec.COUNT > 0
          THEN
             FOR i IN 1 .. download_rec.COUNT
             LOOP
                IF download_rec (i).download_date IS NOT NULL
                THEN
                   INSERT INTO tms.tms_handheld_log (device_id,
                                                     msg_dt,
                                                     severity,
                                                     category,
                                                     msg_text,
                                                     svr_dt,
                                                     log_id)
                     VALUES   (download_rec (i).device_id,
                               download_rec (i).download_date,
                               6,
                               'TESTDOWNLOAD',
                               download_rec (i).truck_route_instance_id,
                               SYSDATE,
                               tms_handheld_seq.NEXTVAL);
                END IF;
             END LOOP;
          ELSE
             DBMS_OUTPUT.put_line ('There is no history be deleted.');
             RETURN;
          END IF;

          DBMS_OUTPUT.put_line ('Data be updated successfully.');
          COMMIT;
       EXCEPTION
          WHEN NO_DATA_FOUND
          THEN
             DBMS_OUTPUT.put_line ('No data be updated.');
       END;

    魔兽就是毒瘤,大家千万不要玩。
  • 相关阅读:
    C++ 用libcurl库进行http通讯网络编程(转)
    树莓派声音设置
    在Linux终端命令行下播放音乐的命令(Ubuntu)
    2.1 LibCurl编程流程(转)
    linux编译curl库的动态库so(转)
    单片机中断的IE和IP寄存器(摘抄)
    MCS-51系列特殊功能寄存器(摘抄)
    linux c libcurl的简单使用(转)
    普林斯顿结构 VS 哈佛结构
    树莓派(raspberry pi)学习4: 更改键盘布局(转)
  • 原文地址:https://www.cnblogs.com/tracy/p/1712536.html
Copyright © 2011-2022 走看看