分享

oracle example1

 moonboat 2007-01-28
CREATE OR REPLACE procedure p_dev_change_total( --集装箱公司设备变动台帐
ls_year varchar2 --年份
)
as
ls_dev_nam           dev_change_total.DEV_NAM%type;          --机械名称
ls_dev_no            dev_change_total.DEV_NO%type;           --机械编号
ls_stand_txt         dev_change_total.STAND_TXT%type;        --规格
ls_model_txt         dev_change_total.MODEL_TXT%type;        --型号
ln_capacity_num      dev_change_total.CAPACITY_NUM%type;    --安全负荷
  ls_factory_nam       dev_change_total.FACTORY_NAM%type;     --制造厂家
  ld_out_dte           dev_change_total.OUT_DTE%type;          --制造年月
  ls_change_instance   dev_change_total.CHANGE_INSTANCE%type;  --变动情况
  ls_change_reason     dev_change_total.CHANGE_REASON%type;    --变动原因
  ls_change_nbr        dev_change_total.CHANGE_NBR%type;       --序号
  ln_change_no         dev_change_total.CHANGE_NO%type;        --序列号
  ldt_change_dte       date;
  ls_kind_cod1_no      varchar(4);
  ls_kind_cod1_nam     varchar(16);
  ln_kind_cod1_id      number(3,0);
  ln_kind_cod1_xlh     number(3,0);

  --定义游标
  --“新增”
  Cursor get_dev_change_new Is Select dev_no,dev_nam,stand_txt,model_txt,capacity_num,factory_nam,out_dte,card_dte From dev_card Where dev_kind_cod1 = ls_kind_cod1_no and (nvl(mana_stat_cod,‘1‘) <> ‘7‘) and to_char(card_dte,‘yyyy‘) = ls_year order by dev_no;
  --“租用”
  Cursor get_dev_change_hire Is Select dev_no,dev_nam,stand_txt,model_txt,capacity_num,factory_nam,out_dte,card_dte From dev_card Where dev_kind_cod1 = ls_kind_cod1_no and (nvl(mana_stat_cod,‘1‘) = ‘7‘) and to_char(card_dte,‘yyyy‘) = ls_year order by dev_no;
  --“出租”
  Cursor get_dev_change_lend Is Select a.dev_no,a.dev_nam,a.stand_txt,a.model_txt,a.capacity_num,a.factory_nam,a.out_dte,b.lend_dte From dev_card a,dev_led b Where b.DEV_no = a.DEV_NO and a.dev_kind_cod1 = ls_kind_cod1_no and a.mana_stat_cod = ‘6‘ and to_char(b.lend_dte,‘yyyy‘) = ls_year order by a.dev_no;
  --“封存”
  Cursor get_dev_change_depot Is Select a.dev_no,a.dev_nam,a.stand_txt,a.model_txt,a.capacity_num,a.factory_nam,a.out_dte,b.reason_txt,b.depot_dte From dev_card a,dev_depot b Where b.DEV_no = a.DEV_NO and a.dev_kind_cod1 = ls_kind_cod1_no and to_char(b.depot_dte,‘yyyy‘) = ls_year order by a.dev_no,b.depot_dte;
  --“启封”
  Cursor get_dev_change_depot_start Is Select a.dev_no,a.dev_nam,a.stand_txt,a.model_txt,a.capacity_num,a.factory_nam,a.out_dte,b.sreason_txt,b.start_dte From dev_card a,dev_depot b Where b.DEV_no = a.DEV_NO and a.dev_kind_cod1 = ls_kind_cod1_no and to_char(b.start_dte,‘yyyy‘) = ls_year order by a.dev_no,b.start_dte;
  --“闲置”
  Cursor get_dev_change_idle Is Select a.dev_no,a.dev_nam,a.stand_txt,a.model_txt,a.capacity_num,a.factory_nam,a.out_dte,b.ireson_txt,b.idle_dte From dev_card a,dev_idle b Where b.DEV_cod = a.DEV_NO and a.dev_kind_cod1 = ls_kind_cod1_no and to_char(b.idle_dte,‘yyyy‘) = ls_year order by a.dev_no,b.idle_dte;
  --“闲置启用”
  Cursor get_dev_change_idle_start Is Select a.dev_no,a.dev_nam,a.stand_txt,a.model_txt,a.capacity_num,a.factory_nam,a.out_dte,b.breason_txt,b.begin_dte From dev_card a,dev_idle b Where b.DEV_cod = a.DEV_NO and a.dev_kind_cod1 = ls_kind_cod1_no and to_char(b.begin_dte,‘yyyy‘) = ls_year order by a.dev_no,b.begin_dte;
  --“停用”
  Cursor get_dev_change_stop Is Select a.dev_no,a.dev_nam,a.stand_txt,a.model_txt,a.capacity_num,a.factory_nam,a.out_dte,b.sreason_txt,b.stop_dte From dev_card a,dev_stop b Where b.stop_cod = a.DEV_NO and a.dev_kind_cod1 = ls_kind_cod1_no and to_char(b.stop_dte,‘yyyy‘) = ls_year order by a.dev_no,b.stop_dte;
  --“停用启用”
  Cursor get_dev_change_stop_start Is Select a.dev_no,a.dev_nam,a.stand_txt,a.model_txt,a.capacity_num,a.factory_nam,a.out_dte,b.breason_txt,b.begin_dte From dev_card a,dev_stop b Where b.stop_cod = a.DEV_NO and a.dev_kind_cod1 = ls_kind_cod1_no and to_char(b.begin_dte,‘yyyy‘) = ls_year order by a.dev_no,b.begin_dte;


  --取报废的设备信息
  Cursor get_dev_change_reject Is Select a.dev_no,a.dev_nam,a.stand_txt,a.model_txt,a.capacity_num,a.factory_nam,a.out_dte,c.reject_rea,b.reject_dte From dev_card a,dev_disposal_app_b b,dev_reject_app_b c Where b.DEV_NO = a.DEV_NO and b.DEV_NO = c.DEV_NO and a.dev_kind_cod1 = ls_kind_cod1_no and a.mana_stat_cod = ‘0‘ and to_char(b.reject_dte,‘yyyy‘) = ls_year order by a.dev_no;
  --取外调的设备信息
  Cursor get_dev_change_remove Is Select a.dev_no,a.dev_nam,a.stand_txt,a.model_txt,a.capacity_num,a.factory_nam,a.out_dte,b.reason_txt,b.remove_dte From dev_card a,dev_remove b Where b.DEV_COD = a.DEV_NO and b.MOVE_MOD = ‘0‘ and a.dev_kind_cod1 = ls_kind_cod1_no and to_char(b.remove_dte,‘yyyy‘) = ls_year order by a.dev_no,b.remove_dte;
  --取得设备类别1
  cursor get_kind_cod1 is select dev_kid_cod1,dev_kid_nam1 from c_dev_typ1 order by dev_kid_cod1;

  begin
     --依次对各种设备类别1的设备进行新增、报废、外调这三种情况的统计
     open get_kind_cod1;
         ln_change_no := 1;
         loop
            fetch get_kind_cod1 into ls_kind_cod1_no,ls_kind_cod1_nam;
            exit when get_kind_cod1%notfound;
                ln_kind_cod1_xlh := ln_change_no;
                ln_change_no := ln_change_no + 1;
                -- 新增
                open get_dev_change_new;
                ln_kind_cod1_id := 1;
                loop
                   fetch get_dev_change_new into ls_dev_no,ls_dev_nam,ls_stand_txt,ls_model_txt,ln_capacity_num,ls_factory_nam,ld_out_dte,ldt_change_dte;
           exit when get_dev_change_new%notfound;
                   ls_change_instance := to_char(ldt_change_dte,‘yyyy/mm/dd‘)||‘ 增加‘;
                   ls_change_nbr := to_char(ln_kind_cod1_id);
                   --把新增的设备信息放到表(dev_change_total)中
                   insert into dev_change_total values(ls_year,ln_change_no,ls_change_nbr,ls_dev_no,ls_dev_nam,ls_stand_txt,ls_model_txt,ln_capacity_num,ls_factory_nam,ld_out_dte,ls_change_instance,ls_change_reason);
                   ln_kind_cod1_id := ln_kind_cod1_id + 1;
                   ln_change_no := ln_change_no + 1;
                end loop;
                close get_dev_change_new;

                -- 租用
                open get_dev_change_hire;
                loop
                   fetch get_dev_change_hire into ls_dev_no,ls_dev_nam,ls_stand_txt,ls_model_txt,ln_capacity_num,ls_factory_nam,ld_out_dte,ldt_change_dte;
           exit when get_dev_change_hire%notfound;
                   ls_change_instance := to_char(ldt_change_dte,‘yyyy/mm/dd‘)||‘ 租用‘;
                   ls_change_nbr := to_char(ln_kind_cod1_id);
                   --把租用的设备信息放到表(dev_change_total)中
                   insert into dev_change_total values(ls_year,ln_change_no,ls_change_nbr,ls_dev_no,ls_dev_nam,ls_stand_txt,ls_model_txt,ln_capacity_num,ls_factory_nam,ld_out_dte,ls_change_instance,ls_change_reason);
                   ln_kind_cod1_id := ln_kind_cod1_id + 1;
                   ln_change_no := ln_change_no + 1;
                end loop;
                close get_dev_change_hire;

                -- 出租
                open get_dev_change_lend;
                loop
                   fetch get_dev_change_lend into ls_dev_no,ls_dev_nam,ls_stand_txt,ls_model_txt,ln_capacity_num,ls_factory_nam,ld_out_dte,ldt_change_dte;
           exit when get_dev_change_lend%notfound;
                   ls_change_instance := to_char(ldt_change_dte,‘yyyy/mm/dd‘)||‘ 出租‘;
                   ls_change_nbr := to_char(ln_kind_cod1_id);
                   --把出租的设备信息放到表(dev_change_total)中
                   insert into dev_change_total values(ls_year,ln_change_no,ls_change_nbr,ls_dev_no,ls_dev_nam,ls_stand_txt,ls_model_txt,ln_capacity_num,ls_factory_nam,ld_out_dte,ls_change_instance,ls_change_reason);
                   ln_kind_cod1_id := ln_kind_cod1_id + 1;
                   ln_change_no := ln_change_no + 1;
                end loop;
                close get_dev_change_lend;

                -- 封存
                open get_dev_change_depot;
                loop
                   fetch get_dev_change_depot into ls_dev_no,ls_dev_nam,ls_stand_txt,ls_model_txt,ln_capacity_num,ls_factory_nam,ld_out_dte,ls_change_reason,ldt_change_dte;
           exit when get_dev_change_depot%notfound;
                   ls_change_instance := to_char(ldt_change_dte,‘yyyy/mm/dd‘)||‘ 封存‘;
                   ls_change_nbr := to_char(ln_kind_cod1_id);
                   --把封存的设备信息放到表(dev_change_total)中
                   insert into dev_change_total values(ls_year,ln_change_no,ls_change_nbr,ls_dev_no,ls_dev_nam,ls_stand_txt,ls_model_txt,ln_capacity_num,ls_factory_nam,ld_out_dte,ls_change_instance,ls_change_reason);
                   ln_kind_cod1_id := ln_kind_cod1_id + 1;
                   ln_change_no := ln_change_no + 1;
                end loop;
                close get_dev_change_depot;

                -- 启封
                open get_dev_change_depot_start;
                loop
                   fetch get_dev_change_depot_start into ls_dev_no,ls_dev_nam,ls_stand_txt,ls_model_txt,ln_capacity_num,ls_factory_nam,ld_out_dte,ls_change_reason,ldt_change_dte;
           exit when get_dev_change_depot_start%notfound;
                   ls_change_instance := to_char(ldt_change_dte,‘yyyy/mm/dd‘)||‘ 启封‘;
                   ls_change_nbr := to_char(ln_kind_cod1_id);
                   --把启封的设备信息放到表(dev_change_total)中
                   insert into dev_change_total values(ls_year,ln_change_no,ls_change_nbr,ls_dev_no,ls_dev_nam,ls_stand_txt,ls_model_txt,ln_capacity_num,ls_factory_nam,ld_out_dte,ls_change_instance,ls_change_reason);
                   ln_kind_cod1_id := ln_kind_cod1_id + 1;
                   ln_change_no := ln_change_no + 1;
                end loop;
                close get_dev_change_depot_start;

                -- 闲置
                open get_dev_change_idle;
                loop
                   fetch get_dev_change_idle into ls_dev_no,ls_dev_nam,ls_stand_txt,ls_model_txt,ln_capacity_num,ls_factory_nam,ld_out_dte,ls_change_reason,ldt_change_dte;
           exit when get_dev_change_idle%notfound;
                   ls_change_instance := to_char(ldt_change_dte,‘yyyy/mm/dd‘)||‘ 闲置‘;
                   ls_change_nbr := to_char(ln_kind_cod1_id);
                   --把闲置的设备信息放到表(dev_change_total)中
                   insert into dev_change_total values(ls_year,ln_change_no,ls_change_nbr,ls_dev_no,ls_dev_nam,ls_stand_txt,ls_model_txt,ln_capacity_num,ls_factory_nam,ld_out_dte,ls_change_instance,ls_change_reason);
                   ln_kind_cod1_id := ln_kind_cod1_id + 1;
                   ln_change_no := ln_change_no + 1;
                end loop;
                close get_dev_change_idle;

                -- 闲置启用
                open get_dev_change_idle_start;
                loop
                   fetch get_dev_change_idle_start into ls_dev_no,ls_dev_nam,ls_stand_txt,ls_model_txt,ln_capacity_num,ls_factory_nam,ld_out_dte,ls_change_reason,ldt_change_dte;
           exit when get_dev_change_idle_start%notfound;
                   ls_change_instance := to_char(ldt_change_dte,‘yyyy/mm/dd‘)||‘ 闲置启用‘;
                   ls_change_nbr := to_char(ln_kind_cod1_id);
                   --把闲置启用的设备信息放到表(dev_change_total)中
                   insert into dev_change_total values(ls_year,ln_change_no,ls_change_nbr,ls_dev_no,ls_dev_nam,ls_stand_txt,ls_model_txt,ln_capacity_num,ls_factory_nam,ld_out_dte,ls_change_instance,ls_change_reason);
                   ln_kind_cod1_id := ln_kind_cod1_id + 1;
                   ln_change_no := ln_change_no + 1;
                end loop;
                close get_dev_change_idle_start;

                -- 停用
                open get_dev_change_stop;
                loop
                   fetch get_dev_change_stop into ls_dev_no,ls_dev_nam,ls_stand_txt,ls_model_txt,ln_capacity_num,ls_factory_nam,ld_out_dte,ls_change_reason,ldt_change_dte;
           exit when get_dev_change_stop%notfound;
                   ls_change_instance := to_char(ldt_change_dte,‘yyyy/mm/dd‘)||‘ 停用‘;
                   ls_change_nbr := to_char(ln_kind_cod1_id);
                   --把停用的设备信息放到表(dev_change_total)中
                   insert into dev_change_total values(ls_year,ln_change_no,ls_change_nbr,ls_dev_no,ls_dev_nam,ls_stand_txt,ls_model_txt,ln_capacity_num,ls_factory_nam,ld_out_dte,ls_change_instance,ls_change_reason);
                   ln_kind_cod1_id := ln_kind_cod1_id + 1;
                   ln_change_no := ln_change_no + 1;
                end loop;
                close get_dev_change_stop;

                -- 停用启用
                open get_dev_change_stop_start;
                loop
                   fetch get_dev_change_stop_start into ls_dev_no,ls_dev_nam,ls_stand_txt,ls_model_txt,ln_capacity_num,ls_factory_nam,ld_out_dte,ls_change_reason,ldt_change_dte;
           exit when get_dev_change_stop_start%notfound;
                   ls_change_instance := to_char(ldt_change_dte,‘yyyy/mm/dd‘)||‘ 停用启用‘;
                   ls_change_nbr := to_char(ln_kind_cod1_id);
                   --把停用启用的设备信息放到表(dev_change_total)中
                   insert into dev_change_total values(ls_year,ln_change_no,ls_change_nbr,ls_dev_no,ls_dev_nam,ls_stand_txt,ls_model_txt,ln_capacity_num,ls_factory_nam,ld_out_dte,ls_change_instance,ls_change_reason);
                   ln_kind_cod1_id := ln_kind_cod1_id + 1;
                   ln_change_no := ln_change_no + 1;
                end loop;
                close get_dev_change_stop_start;

                --取得设备报废信息
                open get_dev_change_reject;
                loop
                   fetch get_dev_change_reject into ls_dev_no,ls_dev_nam,ls_stand_txt,ls_model_txt,ln_capacity_num,ls_factory_nam,ld_out_dte,ls_change_reason,ldt_change_dte;
           exit when get_dev_change_reject%notfound;
                   ls_change_instance := to_char(ldt_change_dte,‘yyyy/mm/dd‘)||‘ 报废‘;
                   ls_change_nbr := to_char(ln_kind_cod1_id);
                   --把报废的设备信息放到表(dev_change_total)中
                   insert into dev_change_total values(ls_year,ln_change_no,ls_change_nbr,ls_dev_no,ls_dev_nam,ls_stand_txt,ls_model_txt,ln_capacity_num,ls_factory_nam,ld_out_dte,ls_change_instance,ls_change_reason);
                   ln_kind_cod1_id := ln_kind_cod1_id + 1;
                   ln_change_no := ln_change_no + 1;
                end loop;
                close get_dev_change_reject;
                ls_change_reason := ‘‘;
        --取得设备外调信息
                open get_dev_change_remove;
                loop
                   fetch get_dev_change_remove into ls_dev_no,ls_dev_nam,ls_stand_txt,ls_model_txt,ln_capacity_num,ls_factory_nam,ld_out_dte,ls_change_reason,ldt_change_dte;
           exit when get_dev_change_remove%notfound;
                   ls_change_instance := to_char(ldt_change_dte,‘yyyy/mm/dd‘)||‘ 外调‘;
                   ls_change_nbr := to_char(ln_kind_cod1_id);
                   --把外调的设备信息放到表(dev_change_total)中
                   insert into dev_change_total values(ls_year,ln_change_no,ls_change_nbr,ls_dev_no,ls_dev_nam,ls_stand_txt,ls_model_txt,ln_capacity_num,ls_factory_nam,ld_out_dte,ls_change_instance,ls_change_reason);
                   ln_kind_cod1_id := ln_kind_cod1_id + 1;
                   ln_change_no := ln_change_no + 1;
                end loop;
                close get_dev_change_remove;
                ls_change_reason := ‘‘;

                --根据设备类别1的代码,设置其对应的"序号"
                if ls_kind_cod1_no = ‘01‘ then
                   ls_change_nbr := ‘一‘;
                end if;
                if ls_kind_cod1_no = ‘02‘ then
                   ls_change_nbr := ‘二‘;
                end if;
                if ls_kind_cod1_no = ‘03‘ then
                   ls_change_nbr := ‘三‘;
                end if;
                if ls_kind_cod1_no = ‘04‘ then
                   ls_change_nbr := ‘四‘;
                end if;
                if ls_kind_cod1_no = ‘05‘ then
                   ls_change_nbr := ‘五‘;
                end if;
                if ls_kind_cod1_no = ‘06‘ then
                   ls_change_nbr := ‘六‘;
                end if;
                ls_dev_no := to_char(ln_change_no - ln_kind_cod1_xlh - 1) || ‘台‘;
                --把按设备类别1进行的合计数添加到设备变动台帐表(dev_change_total)中
                insert into dev_change_total (change_year,change_no,change_nbr,dev_no,dev_nam) values (ls_year,ln_kind_cod1_xlh,ls_change_nbr,ls_dev_no,ls_kind_cod1_nam);
     end loop;
         commit;
         close get_kind_cod1;
  end;
/

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多