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;
使用游标的存储过程:
create or replace procedure Getyc is
v_id VARCHAR2(36);
v_date VARCHAR2(4);
y_date VARCHAR2(4);
needd number;
/*定义查询结果集游标,注意游标存储的是结果集的快照*/
cursor gcjbxx_cur is
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;
/*定义与游标类型匹配的行记录对象*/
gcjbxx_rec gcjbxx_cur%rowtype;
cursor jqtemp_cur is
select sjsj from t_bas_jqtemp;
jqtemp_rec jqtemp_cur%rowtype;
begin
select needduty into needd from workattendence
where TO_CHAR(datetime, 'YYYY/MM/DD')=TO_CHAR(SYSDATE, 'YYYY/MM/DD');
if(needd=1) then
/*打开游标*/
open gcjbxx_cur;
LOOP
fetch gcjbxx_cur into gcjbxx_rec;
/*当未找到记录时退出循环*/
exit when gcjbxx_cur%notfound;
v_id := SYS_GUID();
insert into T_BGYCSBJL (ID, SSXQ, BGRQ, DQZT, SBSJ, DXFSZT, BGLX)
VALUES(v_id,gcjbxx_rec.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=gcjbxx_rec.xqbm;
/*关闭游标*/
END LOOP;
close gcjbxx_cur;
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;
/*开始遍历t_bas_jqtemp*/
open jqtemp_cur;
loop
fetch jqtemp_cur into jqtemp_rec;
exit when jqtemp_cur%notfound;
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(jqtemp_rec.sjsj, '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,jqtemp_rec.sjsj,0,jqtemp_rec.sjsj,0,0);
insert into T_RBYCSBMX(ID, SBJLID, DQZT, SBRQ, GCID)
select SYS_GUID() ID,v_id SBJLID,0 DQZT,jqtemp_rec.sjsj 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(jqtemp_rec.sjsj, 'YYYY/MM/DD')) and c.xqbm=i.xqbm;
END LOOP;
y_date := TO_CHAR(jqtemp_rec.sjsj,'DD');
if(y_date='25') then
insert into T_BGYCSBJL(ID,SSXQ,BGRQ,DQZT,SBSJ,DXFSZT,BGLX)
select SYS_GUID() ID,
c.xqbm SSXQ,
jqtemp_rec.sjsj BGRQ,
0 DQZT,
jqtemp_rec.sjsj 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(jqtemp_rec.sjsj,'YYYY/MM')) group by c.xqbm;
end if;
end loop;
close jqtemp_cur;
DELETE FROM t_bas_jqtemp;
else
insert into t_bas_jqtemp (sjsj,id) VALUES(SYSDATE,sys_guid());
end if;
commit;
end Getyc;
oracle 存储过程的写法的更多相关文章
- Oracle存储过程中跳出循环的写法
注:本文来源于: < Oracle存储过程中跳出循环的写法 > Oracle存储过程中跳出循环的写法 记录exit和return的用法 1:exit用来跳出循环 loop IF V_ ...
- Oracle存储过程(增、删、改)写法、oracle执行存储过程
Oracle存储过程(增.删.改)写法 发布时间: 2010-3-24 11:07 作者: ZHF 来源: 51Testing软件测试网采编 字体: 小 中 大 | 上一篇 下一篇 ...
- Oracle的存储过程基本写法
转: Oracle的存储过程基本写法 目录 1.1,Oracle存储过程简介: 1.2,创建存储过程的语法: 2.0,游标的使用.看到的一段解释很好的概念,如下: 回到顶部 1.1,Oracle存储过 ...
- oracle 存储过程 动态sql语句
一.在oracle项目开发中越到问题: 在利用ODP向oracle中插入数据时,如果这样写: insert into clobTable (id, story) values(1,'....'); ...
- Oracle 存储过程_(收集)
oracle 存储过程的基本语法 1.基本结构 CREATE OR REPLACE PROCEDURE 存储过程名字( 参数1 IN NUMBER, 参数2 IN NUMBER) IS变量 ...
- oracle 存储过程使用动态sql
Oracle存储过程使用动态SQL 有两种写法:用 DBMS_SQL 或 execute immediate,建议使用后者. DDL和DML (注意DDL中可以用拼接字符串的方法用来create ta ...
- Oracle存储过程——日常记录
代码规范 Oracle存储过程,关键字大写,变量小写并以v_开头,规范代码,提高可读性 赋值与判断符号 Oracle存储过程,变量赋值使用 := 符号,条件判断直接用 = 符号. 变量声明需在 beg ...
- 数据库周刊30丨数据安全法草案将亮相;2020数据库产业报告;云南电网上线达梦;达梦7误删Redo Log;Oracle存储过程性能瓶颈;易鲸捷实践案例……
摘要:墨天轮数据库周刊第30期发布啦,每周1次推送本周数据库相关热门资讯.精选文章.干货文档. 热门资讯 1.数据安全法草案即将亮相:将确立数据分级分类管理.应急处置制度[摘要]数据安全法草案即将在本 ...
- oracle 存储过程
来自:http://www.jb51.net/article/31805.htm Oracle存储过程基本语法 存储过程 1 CREATE OR REPLACE PROCEDURE 存储过程名 2 I ...
随机推荐
- Zabbix 3.0.3 SQL Injection
Zabbix version 3.0.3 suffers from a remote SQL injection vulnerability. ============================ ...
- Linux基础※※※※如何使用Git in Linux(二)
参考资料: 1. http://www.liaoxuefeng.com/wiki/0013739516305929606dd18361248578c67b8067c8c017b000 2. Git-简 ...
- HQL基础Query简单查询结果for输出和Iterator输出
HQL第一次课: hibernate Query Language:hibernate 查询语言 语法: query: String hql="from dept"; Query ...
- hdu4511小明系列故事——女友的考验(ac自动机+最短路)
链接 预处理出来任意两点的距离,然后可以顺着trie树中的节点走,不能走到不合法的地方,另开一维表示走到了哪里,依次来更新. 注意判断一下起点是不是合法. #include <iostream& ...
- python + selenium相关事件和元素定位
女友由于工作上的失误,将公司RDM中的某一字段的2000条数据给删除了.....就算是重新添加字段,但是与其他数据的关联性已经不在了.由于每天的数据修改量大,有关部门不愿意恢复数据库,因此只能一条条的 ...
- JQuery中的id选择器含有特殊字符时,不能选中dom元素
1.jquery类库在我们实际项目中用的很多,大家经常需要根据控件的id,获取对应的html元素.但是:当id含有特殊字符的时候,是不能选中的 2.jquery的id选择器只支持,单词.阿拉伯数字.下 ...
- Ubuntu12.04安装64位系统出现编译错误error while loading shared libraries: libz.so.1: cannot open shared object file: No such file or dir
问题: Ubuntu12.04安装64位系统出现编译错误error while loading shared libraries: libz.so.1: cannot open shared obje ...
- MySQL数据库管理用户权限
http://blog.itpub.net/7607759/viewspace-675079/ 2.2 授予权限 前面提到了grant命令,grant的语法看起来可是相当复杂的呐: GRANT pri ...
- E:Sudoku
总时间限制: 2000ms 内存限制: 65536kB描述Sudoku is a very simple task. A square table with 9 rows and 9 columns ...
- require.js基本认识
基本API require会定义三个变量:define,require,requirejs,其中require === requirejs,一般使用require更简短 define 从名字就可以看出 ...