Oracle 创建存储过程
2007-04-16 10:40
330 查看
create or replace procedure DongjieToTable --创建一个名为donjietotable的存储过程
as --定义数据区
cursor c_qydjsx --定义一个游标
is select nbxh from aqydjsx;
cursor c_sttzqk
is select tznbxh from asttzqk;
V_nbxh varchar2(40); --定义一个变量
V_tznbxh varchar2(40);
begin --代码块开始区
open c_qydjsx(); --打开一个游标
fetch c_qydjsx into V_nbxh;
while c_qydjsx%found loop
update aqydjsx set djlx = '01'
where '1' in
(select sfjd from qydongjie where qynbxh=V_nbxh and djjdjzsj = (select max(djjdjzsj) from qydongjie where qynbxh=V_nbxh))
and '0' not in
(select sfjd from qydongjie where qynbxh=V_nbxh and djjdjzsj = (select max(djjdjzsj) from qydongjie where qynbxh=V_nbxh))
and nbxh = V_nbxh;
fetch c_qydjsx into V_nbxh;
end loop;
commit;
open c_sttzqk();
fetch c_sttzqk into V_tznbxh;
while c_sttzqk%found loop
update asttzqk set djlx = '01'
where '1' in
(select sfjd from qydongjie where qynbxh=V_tznbxh and djjdjzsj = (select max(djjdjzsj) from qydongjie where qynbxh=V_tznbxh))
and '0' not in
(select sfjd from qydongjie where qynbxh=V_tznbxh and djjdjzsj = (select max(djjdjzsj) from qydongjie where qynbxh=V_tznbxh))
and tznbxh = V_tznbxh;
fetch c_sttzqk into V_tznbxh;
end loop;
commit;
EXCEPTION --异常块,当以上代码执行有异常时将执行这里
WHEN others THEN
rollback;
end; --结束代码块
要执行创建好的存储过程在Command中exec dongjietotable;
如果在代码中要根据一个动态的值去查一个表,那么可以用有参游标
创建方法
cursor c_qynjjbqk(EpNbxh varchar2) --变量名为EpNbxh,类型为varchar2
is select max(nd) from qynjjbqk where nbxh=EpNbxh;
调用方法
open c_qynjjbqk(nbxh); --"()"内为要传入的参数值
as --定义数据区
cursor c_qydjsx --定义一个游标
is select nbxh from aqydjsx;
cursor c_sttzqk
is select tznbxh from asttzqk;
V_nbxh varchar2(40); --定义一个变量
V_tznbxh varchar2(40);
begin --代码块开始区
open c_qydjsx(); --打开一个游标
fetch c_qydjsx into V_nbxh;
while c_qydjsx%found loop
update aqydjsx set djlx = '01'
where '1' in
(select sfjd from qydongjie where qynbxh=V_nbxh and djjdjzsj = (select max(djjdjzsj) from qydongjie where qynbxh=V_nbxh))
and '0' not in
(select sfjd from qydongjie where qynbxh=V_nbxh and djjdjzsj = (select max(djjdjzsj) from qydongjie where qynbxh=V_nbxh))
and nbxh = V_nbxh;
fetch c_qydjsx into V_nbxh;
end loop;
commit;
open c_sttzqk();
fetch c_sttzqk into V_tznbxh;
while c_sttzqk%found loop
update asttzqk set djlx = '01'
where '1' in
(select sfjd from qydongjie where qynbxh=V_tznbxh and djjdjzsj = (select max(djjdjzsj) from qydongjie where qynbxh=V_tznbxh))
and '0' not in
(select sfjd from qydongjie where qynbxh=V_tznbxh and djjdjzsj = (select max(djjdjzsj) from qydongjie where qynbxh=V_tznbxh))
and tznbxh = V_tznbxh;
fetch c_sttzqk into V_tznbxh;
end loop;
commit;
EXCEPTION --异常块,当以上代码执行有异常时将执行这里
WHEN others THEN
rollback;
end; --结束代码块
要执行创建好的存储过程在Command中exec dongjietotable;
如果在代码中要根据一个动态的值去查一个表,那么可以用有参游标
创建方法
cursor c_qynjjbqk(EpNbxh varchar2) --变量名为EpNbxh,类型为varchar2
is select max(nd) from qynjjbqk where nbxh=EpNbxh;
调用方法
open c_qynjjbqk(nbxh); --"()"内为要传入的参数值
相关文章推荐
- Oracle 创建存储过程以及PlSql 调用 存储过程
- Oracle 9i 数据库 创建数据库 Net 配置 创建表 SQL查询 创建存储过程 (图)
- oracle利用job创建一个定时任务,定时调用存储过程
- Oracle 使用IN OUT参数创建/调用存储过程
- oracle 创建存储过程
- Oracle创建存储过程
- Oracle 11g 环境下,利用utl_smtp创建发送邮件的存储过程
- oracle 创建存储过程 在job 定时执行
- Oracle创建存储过程、创建函数、创建包
- oracle 赋值存储过程的创建和执行
- Oracle 创建存储过程
- oracle 创建表并创建存储过程,通过存储过程将其他用户的信息导入到新建表中
- 创建Oracle 显示执行计划存储过程
- Oracle 9i 数据库 创建数据库 Net 配置 创建表 SQL查询 创建存储过程 (图)
- Oracle--plsql创建存储过程
- oracle 存储过程 函数 创建 删除 参数 传递 函数 查看 包 系统包
- Oracle创建定时任务与存储过程
- Oracle创建存储过程以及JAVA调用方法
- Oracle创建存储过程、创建函数、创建包
- oracle学习 五 使用存储过程创建一个重置密码为123456的功能(持续更新中)