oracle 存储过程的写法

create or replace procedure Getyc is
  v_id VARCHAR2(36);
  v_date VARCHAR2(4);

begin
  declare
    begin
      for i in (select
           c.xqbm
      from T_BAS_GCJBXX c
     where c.id in (select a.id
                      from T_BAS_GCJBXX a
                     where a.scszbg = 1
                    minus
                    select b.gcid
                      from T_BAS_SZRBJCXX b
                     where TO_CHAR(b.bgrq, ‘YYYY/MM/DD‘) =
                           TO_CHAR(SYSDATE, ‘YYYY/MM/DD‘)) group by c.xqbm) LOOP
                           v_id := SYS_GUID();
                           insert into T_BGYCSBJL (ID, SSXQ, BGRQ, DQZT, SBSJ, DXFSZT, BGLX) VALUES(v_id,i.xqbm,SYSDATE,0,SYSDATE,0,0);
                           insert into T_RBYCSBMX(ID, SBJLID, DQZT, SBRQ, GCID) select SYS_GUID() ID,
                                                                                         v_id SBJLID,
                                                                                            0 DQZT,
                                                                                      SYSDATE SBRQ,
                                                                                         c.id GCID
                                                                                           from T_BAS_GCJBXX c where c.id in (select a.id
                                                                                                                               from T_BAS_GCJBXX a
                                                                                                                               where a.scszbg = 1
                                                                                                                               minus
                                                                                                                               select b.gcid
                                                                                                                                from T_BAS_SZRBJCXX b
                                                                                                                                where TO_CHAR(b.bgrq, ‘YYYY/MM/DD‘) =
                                                                                                                                TO_CHAR(SYSDATE, ‘YYYY/MM/DD‘)
                                                                                                                                ) and c.xqbm=i.xqbm;
             END LOOP;
              end;
              declare
              begin
               v_date := TO_CHAR(SYSDATE,‘DD‘);
              if(v_date=‘25‘) then
           insert into T_BGYCSBJL(ID,SSXQ,BGRQ,DQZT,SBSJ,DXFSZT,BGLX)
          select SYS_GUID() ID,
                 c.xqbm SSXQ,
                 SYSDATE BGRQ,
                 0 DQZT,
                 SYSDATE SBSJ,
                 0 DXFSZT,
                 1 BGLX
                 from T_BAS_GCJBXX c
                 where c.xqbm in (select a.xqbm
                                       from T_BAS_GCJBXX a
                                       where a.scszbg=1
                                       minus
                                   select b.sbdw
                                   from T_SZYBMBXX b
                                   where TO_CHAR(b.bgny,‘YYYY/MM‘)=
                                   TO_CHAR(SYSDATE,‘YYYY/MM‘)) group by c.xqbm;

end if;
               end;
             commit;

end Getyc;

begin
sys.dbms_scheduler.set_attribute(name => ‘WFNCYS.JOB_YC‘, attribute => ‘repeat_interval‘, value => ‘Freq=DAILY;ByHour=17;ByMinute=30;BySecond=00‘);
end;

时间: 2024-10-12 01:41:38

oracle 存储过程的写法的相关文章

Oracle存储过程中跳出循环的写法

Oracle存储过程中跳出循环的写法 博客分类: oracle Oracle 记录exit和return的用法 exit用来跳出循环 loop IF V_KBP IS NULL THEN           EXIT;    END IF; end loop; return跳出存储过程 loop IF V_KBP IS NULL THEN         return;    END IF; end loop; 跳出loop 一次循环 oracle 11g已提供continue; oracle

Oracle存储过程的编写经验与优化措施

1.开发人员如果用到其他库的Table或View,务必在当前库中建立View来实现跨库操作,最好不要直接使用"databsevv.dbo.table_name",因为sp_depends不能显示出该SP所使用的跨库table或view,不方便校验. 2.开发人员在提交SP前,必须已经使用set showplan on分析过查询计划,做过自身的查询优化检查. 3.高程序运行效率,优化应用程序,在SP编写过程中应该注意以下几点: a) SQL的使用规范: i. 尽量避免大事务操作,慎用ho

Oracle 存储过程_(收集)

oracle 存储过程的基本语法 1.基本结构 CREATE OR REPLACE PROCEDURE 存储过程名字(    参数1 IN NUMBER,    参数2 IN NUMBER) IS变量1 INTEGER :=0;变量2 DATE;BEGIN END 存储过程名字 2.SELECT INTO STATEMENT  将select查询的结果存入到变量中,可以同时将多个列存储多个变量中,必须有一条  记录,否则抛出异常(如果没有记录抛出NO_DATA_FOUND)  例子:   BEG

Oracle存储过程开发学习

1.rowtype的使用 create or replace procedure PD_ROWTYPE is v_emp_rec emp%rowtype; begin select * into v_emp_rec from emp where empno=7839; dbms_output.put_line(v_emp_rec.ename||'的薪水是'||v_emp_rec.sal); end PD_ROWTYPE; 2.判断用户从键盘输入的数字 accept num prompt'请输入一

oracle存储过程 调优 基础篇

1.如果用到其他库的Table或View,务必在当前库中建立View来实现跨库操作,最好不要直接使用"databsevv.dbo.table_name",因为sp_depends不能显示出该SP所使用的跨库table或view,不方便校验. 2.开发人员在提交SP前,必须已经使用set showplan on分析过查询计划,做过自身的查询优化检查. 3.高程序运行效率,优化应用程序,在SP编写过程中应该注意以下几点: a) SQL的使用规范: i. 尽量避免大事务操作,慎用holdlo

Oracle存储过程——日常记录

代码规范 Oracle存储过程,关键字大写,变量小写并以v_开头,规范代码,提高可读性 赋值与判断符号 Oracle存储过程,变量赋值使用 := 符号,条件判断直接用 = 符号. 变量声明需在 begin…end 代码块之外. If语句 if语句中,if后不用加 ( ) , 代码前加then: else if写法为elsif,elsif与else都是可选: 结尾必须有end if: 标准结构如下: if…then …… elsif…then  --可选(多个) …… else       --可

oracle存储过程实例

oracle存储过程实例 分类: 数据(仓)库及处理 2010-05-03 17:15 1055人阅读 评论(2)收藏 举报 认识存储过程和函数 存储过程和函数也是一种PL/SQL块,是存入数据库的PL/SQL块.但存储过程和函数不同于已经介绍过的PL/SQL程序,我们通常把PL/SQL程序称为无名块,而存储过程和函数是以命名的方式存储于数据库中的.和PL/SQL程序相比,存储过程有非常多长处,详细归纳例如以下: * 存储过程和函数以命名的数据库对象形式存储于数据库其中.存储在数据库中的长处是非

java怎样将一组对象传入Oracle存储过程

java怎样将一组对象传入Oracle存储过程.须要注意的是jar包是有要求的,假设使用不当会导致仅仅有数字能传过去,字符串传只是去.假设是Oracle11g则须要选用例如以下的jar包,F:\app\Administrator\product\11.2.0\dbhome_1\jlib\orai18n.jar. D:\program\weblogic\oracle_common\modules\oracle.jdbc_11.2.0\ojdbc6.jar 样例例如以下: CREATE OR REP

springMVC + oracle存储过程 构建高性能灵活易维护的java web架构

MVC让简单的业务也变得复杂 不知道你在使用MVC模式开发项目的时候是否觉得很麻烦,一个简单的增删改查动作却要涉及到多个文件操作. 以一条数据增加为例说明. 假设我们使用hibernate并且dao层是已经封装好的 从图中可以看出如果我们在系统中写一个增加功能需要自己动手写的地方至少是 jsp , action , service,servicesImpl 四层. 如果是复杂的添加操作那么我们很可能还会自己定义dao层的接口和方法,那样就是6层操作了. 如果使用mybatis 至少也是写4层,常