• oralcle 存储过程批处理


    create or replace procedure typeHinD
    as
    cursor typeall is select id,name from tbl_en_type;   --查询出来所有分类
    cursor hournum is select EN_VAL_ORG,EN_VAL_STD,EN_COST,UNIT_ID,SUPER_ID,INDS_ID,EN_TYPE_ID,STAND_COE from tbl_unit_en_type_hour
    where to_date(sysdate-1,'dd-mon-yyyy')  = to_date(en_date,'dd-mon-yyyy');
    typeAllid varchar2(32);
    hourtype varchar2(32);
    envalorg number;
    envalstd  number;
    encost number;
    typeid varchar2(32);
    flag number;
    begin
    envalstd :=0;
    encost :=0;
    envalorg :=0;
    flag := 0;
     for typeAllid in typeall loop --循环所有类别
        begin
            --dbms_output.put_line(typeAllid.id);    
            typeid :=typeAllid.id;
            for hourtype in hournum loop  --循环所有小时表
                begin
                  if(typeAllid.id=hourtype.EN_TYPE_ID)then
                    begin
                      flag :=1;
                      dbms_output.put_line('nnnnnnnnnnnnn');
                      envalstd := envalstd + hourtype.EN_VAL_STD;
                      encost := encost + hourtype.EN_COST;
                      envalorg :=envalorg + hourtype.EN_VAL_ORG;
                      --dbms_output.put_line(envalstd);
                      --dbms_output.put_line(encost);
                    end;
                    end if;
                end;
                end loop;
                if(flag = 1)then
                begin
                INSERT INTO TBL_UNIT_EN_TYPE_DAY ( id,EN_VAL_ORG, EN_VAL_STD, UNIT_ID, SUPER_ID, INDS_ID, EN_TYPE_ID, EN_DATE, CREATED_DATE, CREATED_BY, CREATED_PRG_NM, UPDATED_DATE, UPDATED_BY, UPDATED_PRG_NM, MODIFY_COUNT, STAND_COE, COUNT_FLAG, EN_COST)

    -- USER_SEQ.nextval  序列
                VALUES ( USER_SEQ.nextval,envalorg,envalstd , '402881043ad9b54f013ad9cd7d260008', '402881fa3a687abb013a688885f1000b', '402881ef3b5f0667013b5f082db60002',typeid , sysdate, sysdate, 'system', 'system', sysdate, 'system', 'system', '0', '0', '0', encost);
                COMMIT;
                flag :=0;     --复原flag      
                envalstd :=0;  --清空std值
                encost :=0;  -- 清空cost值
                envalorg :=0;  -- 清空org值
                end;
                end if;
         end;
      end loop;
    end;

    执行:set serveroutput on;
              execute typeHinD;

    序列:CREATE SEQUENCE USER_SEQ
    MINVALUE 1 --最小值
    MAXVALUE 999999999999999999999999999  --最大值
    INCREMENT BY 1 --用于定义序列的步长,如果省略,则默认为1,如果出现负值,则代表Oracle序列的值是按照此步长递减的
    START WITH 41 --定义序列的初始值(即产生的第一个值),默认为1
    CACHE 20   --定义存放序列的内存块的大小,默认为20。NOCACHE表示不对序列进行内存缓冲。对序列进行内存缓冲,可以改善序列的性能
    NOORDER NOCYCLE ;  --表示当序列生成器的值达到限制值后是否循环。CYCLE代表循环,NOCYCLE代表不循环。如果循环,则当递增序列达到最大值时,循环到最小值;对于递减序列达到最小值

    执行有输出的存储过程:

    set serveroutput on;
    declare
    std number;
    org number;
    cost number;
    begin
    typeHinD(std,org,cost);
     dbms_output.put_line('envalstdall:'||std);
       dbms_output.put_line('encostall:'||org);
       dbms_output.put_line('envalorgall:'||cost);
    end;

  • 相关阅读:
    SQLERRM, use it with caution.
    nginx 的常用优化
    (备忘) 快速启动栏 “显示桌面”丢失 解决方案
    Invoke and BeginInvoke BeginInvoke和EndInvoke方法 (转)
    枚举CE进程
    WinForm 中DataGrideView 对键盘输入进行筛选
    双网卡上网(转载)
    在MSSQL上强制删除订阅 (转)
    sql server系统表详细说明(转)
    event.keycode大全(javascript)
  • 原文地址:https://www.cnblogs.com/mingtian521/p/3123554.html
Copyright © 2020-2023  润新知