oracle存储过程与游标使用实例
2015-07-13 13:32
453 查看
create or replace procedure CLOSE_DIRECT_AUDIT_POINT(pointname in varchar2,
new_pointname in varchar2) is
v_audit_id NUMBER(38);
v_new_audit_id NUMBER(38);
iCnt number;
v_zjhm VARCHAR2(18);
v_zjlx char(1);
v_xm VARCHAR2(30);
v_jhrsjhm varchar2(11);
--该信息审核点暂缓的学生
cursor review_student_cur is
select b.zjlx, b.zjhm, b.xm, c.jhrsjhm
from T_PSINFO_REV_PUBLIC a, T_PSTU_REGINFO b, t_pstu_reginfo_jhr c
where a.XXSHDID = v_audit_id
and a.zjlx = b.zjlx
and a.zjhm = b.zjhm
and a.zjhm = c.zjhm
and b.SHFLG = '6';
begin
--取旧直审点编号
select count(*) into iCnt from T_PSINFO_REVIEW where shdmc = pointname;
if (iCnt = 1) then
select xxshdid
into v_audit_id
from T_PSINFO_REVIEW
where shdmc = pointname;
else
dbms_output.put_line('aduit point named[' || pointname || '] found [' || iCnt ||
'] records!');
return;
end if;
--取新直审点编号
select count(*)
into iCnt
from T_PSINFO_REVIEW
where shdmc = new_pointname;
if (iCnt = 1) then
select xxshdid
into v_new_audit_id
from T_PSINFO_REVIEW
where shdmc = new_pointname;
else
dbms_output.put_line('new aduit point named[' || new_pointname ||
'] found [' || iCnt || '] records!');
return;
end if;
--关闭对应用户的校审核权限
update T_AUTH_USER_ROLE
set delflg='1'
where yhbh in (select a.yhbh
from t_auth_user a, T_PSINFO_REVIEW b
where a.XXSHDID = b.XXSHDID
and a.XXSHDID in (select XXSHDID from t_psinfo_review where qxdm='310105'
and glzsxxbh is not null))
and jsbh='004';
--统计审核点内暂存孩子数量
select count(a.zjhm)
into iCnt
from T_PSINFO_REV_PUBLIC a, T_PSTU_REGINFO b
where a.zjlx = b.zjlx
and a.zjhm = b.zjhm
and b.SHFLG = '6'
and a.XXSHDID = v_audit_id;
if (iCnt > 0) then
dbms_output.put_line('There are ' || iCnt ||
' students who is temporarily saved in this aduit point!');
--修改审核点相关学生状态,暂存(6)——>待补齐材料(3)
update T_PSTU_REGINFO
set shflg = '3'
where zjhm in (select a.zjhm
from T_PSINFO_REV_PUBLIC a, T_PSTU_REGINFO b
where a.zjlx = b.zjlx
and a.zjhm = b.zjhm
and b.SHFLG = '6'
and a.XXSHDID = v_audit_id);
--将学生所属信息审核点迁移至新流转点
update T_PSINFO_REV_PUBLIC
set xxshdid = v_new_audit_id
where zjhm in (select a.zjhm
from T_PSINFO_REV_PUBLIC a, T_PSTU_REGINFO b
where a.zjlx = b.zjlx
and a.zjhm = b.zjhm
and b.SHFLG = '6'
and a.XXSHDID = v_audit_id);
iCnt := 0; --重置计数器
open review_student_cur;
loop
fetch review_student_cur
into v_zjlx, v_zjhm, v_xm, v_jhrsjhm;
exit when review_student_cur%notfound;
--逐条发短信
insert into T_NOTICE_INFO
(TZJLID,TZRZJLX,TZRZJHM,TZRSJHM,TZLB,TZMC,WYYW,WYNY,TZHFBZ,DYBZ,DXYW,DXNY,DXFSZT,
DXFSSJ,DXFSCS,MTMSGID,TZCKZT,DELFLG)
values
(seq_tzjlid.nextval,v_zjlx,v_zjhm,v_jhrsjhm,'2','待补齐材料','0','','','0','1',
'待定!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!',
'0',sysdate,'1','','0','0');
end loop;
close review_student_cur;
else
dbms_output.put_line('There is no students who is temporarily saved in this aduit point,work skipped');
return;
end if;
--commit;
end CLOSE_DIRECT_AUDIT_POINT;
new_pointname in varchar2) is
v_audit_id NUMBER(38);
v_new_audit_id NUMBER(38);
iCnt number;
v_zjhm VARCHAR2(18);
v_zjlx char(1);
v_xm VARCHAR2(30);
v_jhrsjhm varchar2(11);
--该信息审核点暂缓的学生
cursor review_student_cur is
select b.zjlx, b.zjhm, b.xm, c.jhrsjhm
from T_PSINFO_REV_PUBLIC a, T_PSTU_REGINFO b, t_pstu_reginfo_jhr c
where a.XXSHDID = v_audit_id
and a.zjlx = b.zjlx
and a.zjhm = b.zjhm
and a.zjhm = c.zjhm
and b.SHFLG = '6';
begin
--取旧直审点编号
select count(*) into iCnt from T_PSINFO_REVIEW where shdmc = pointname;
if (iCnt = 1) then
select xxshdid
into v_audit_id
from T_PSINFO_REVIEW
where shdmc = pointname;
else
dbms_output.put_line('aduit point named[' || pointname || '] found [' || iCnt ||
'] records!');
return;
end if;
--取新直审点编号
select count(*)
into iCnt
from T_PSINFO_REVIEW
where shdmc = new_pointname;
if (iCnt = 1) then
select xxshdid
into v_new_audit_id
from T_PSINFO_REVIEW
where shdmc = new_pointname;
else
dbms_output.put_line('new aduit point named[' || new_pointname ||
'] found [' || iCnt || '] records!');
return;
end if;
--关闭对应用户的校审核权限
update T_AUTH_USER_ROLE
set delflg='1'
where yhbh in (select a.yhbh
from t_auth_user a, T_PSINFO_REVIEW b
where a.XXSHDID = b.XXSHDID
and a.XXSHDID in (select XXSHDID from t_psinfo_review where qxdm='310105'
and glzsxxbh is not null))
and jsbh='004';
--统计审核点内暂存孩子数量
select count(a.zjhm)
into iCnt
from T_PSINFO_REV_PUBLIC a, T_PSTU_REGINFO b
where a.zjlx = b.zjlx
and a.zjhm = b.zjhm
and b.SHFLG = '6'
and a.XXSHDID = v_audit_id;
if (iCnt > 0) then
dbms_output.put_line('There are ' || iCnt ||
' students who is temporarily saved in this aduit point!');
--修改审核点相关学生状态,暂存(6)——>待补齐材料(3)
update T_PSTU_REGINFO
set shflg = '3'
where zjhm in (select a.zjhm
from T_PSINFO_REV_PUBLIC a, T_PSTU_REGINFO b
where a.zjlx = b.zjlx
and a.zjhm = b.zjhm
and b.SHFLG = '6'
and a.XXSHDID = v_audit_id);
--将学生所属信息审核点迁移至新流转点
update T_PSINFO_REV_PUBLIC
set xxshdid = v_new_audit_id
where zjhm in (select a.zjhm
from T_PSINFO_REV_PUBLIC a, T_PSTU_REGINFO b
where a.zjlx = b.zjlx
and a.zjhm = b.zjhm
and b.SHFLG = '6'
and a.XXSHDID = v_audit_id);
iCnt := 0; --重置计数器
open review_student_cur;
loop
fetch review_student_cur
into v_zjlx, v_zjhm, v_xm, v_jhrsjhm;
exit when review_student_cur%notfound;
--逐条发短信
insert into T_NOTICE_INFO
(TZJLID,TZRZJLX,TZRZJHM,TZRSJHM,TZLB,TZMC,WYYW,WYNY,TZHFBZ,DYBZ,DXYW,DXNY,DXFSZT,
DXFSSJ,DXFSCS,MTMSGID,TZCKZT,DELFLG)
values
(seq_tzjlid.nextval,v_zjlx,v_zjhm,v_jhrsjhm,'2','待补齐材料','0','','','0','1',
'待定!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!',
'0',sysdate,'1','','0','0');
end loop;
close review_student_cur;
else
dbms_output.put_line('There is no students who is temporarily saved in this aduit point,work skipped');
return;
end if;
--commit;
end CLOSE_DIRECT_AUDIT_POINT;
相关文章推荐
- oracle 存储过程
- Oracle RAC安装
- oracle 导入导出基本语法
- oracle执行update时卡死问题的解决办法
- ORACLE 常用kill表锁命令
- Oracle行转列、列转行的Sql语句总结
- 用C#将图片保存至Oracle BLOB字段中的方法
- Oracle not in子连接查询不到值的问题(not in 不能查询null数据)
- oracle11g ADR 位置
- Oracle Error 之SP2-0618: Cannot find the Session Identifier. Check PLUSTRACE role is enabled
- Oracle中Rownum的使用技巧与注意事项
- Oracle数据库学习
- oracle创建表空间
- plsql连接不上64位oracle11g的解决办法
- 在ADF应用中,能够通过 oracle.adf.view.rich.security.FRAME_BUSTING 参数来使用framebusting功能。
- 5、VS2010+ASP.NET MVC4+EF4+JqueryEasyUI+Oracle该项目的开发——使用datagrid做报表
- oracle默认管理员的帐号和密码以及密码修改和解除锁定
- [Oracle] - Create DB on Oracle 12c for an Application
- 由于以下错误,Enterprise Manager 配置失败 oracle 11g
- Oracle 11g ORA-12560: TNS: 协议适配器错误!解决方法