oracle存储过程中if条件后的sql没有执行
createprocedureproc_kaoqinasv_idint;v_id2int;v_inproutvarchar2(20);v_inprout1varchar2...
create procedure proc_kaoqin
as
v_id int;
v_id2 int;
v_inprout varchar2(20);
v_inprout1 varchar2(20);
begin
select min(id) into v_id from kaoqin_temp;
select max(id) into v_id2 from kaoqin_temp;
while v_id+1<=v_id2
loop
select in_or_out into v_inprout from kaoqin_temp where id=v_id;
select in_or_out into v_inprout1 from kaoqin_temp where id=v_id+1;
dbms_output.put_line(v_id);
dbms_output.put_line(v_inprout);
dbms_output.put_line(v_inprout1);
if trim(v_inprout)=trim(v_inprout1) then
dbms_output.put_line('hehe');
delete from kaoqin_temp where door='部门门' and id in(v_id,v_id+1);
update kaoqin_temp set id=v_id+1 where door='正大门';
dbms_output.put_line('haha');
end if;
v_id:=v_id+1;
end loop;
dbms_output.put_line('hehe');dbms_output.put_line('haha'); 都执行了,但中间的两条sql语句没有执行,这是为什么
下面是表kaoqin_temp中的数据:
id time name card_num door in_or_out
1 01-AUG-16 06.35.00.000000 PM 张小平 1111111 部门门 正常出门
2 01-AUG-16 06.45.00.000000 PM 张小平 1111111 正大门 正常出门
3 01-AUG-16 07.45.00.000000 PM 张小平 1111111 正大门 正常进门
4 01-AUG-16 07.55.00.000000 PM 张小平 1111111 部门门 正常进门
提示的错误是第12行代码会返回多行数据。还有我测试的时候发现if条件里的sql语句没有执行。 展开
as
v_id int;
v_id2 int;
v_inprout varchar2(20);
v_inprout1 varchar2(20);
begin
select min(id) into v_id from kaoqin_temp;
select max(id) into v_id2 from kaoqin_temp;
while v_id+1<=v_id2
loop
select in_or_out into v_inprout from kaoqin_temp where id=v_id;
select in_or_out into v_inprout1 from kaoqin_temp where id=v_id+1;
dbms_output.put_line(v_id);
dbms_output.put_line(v_inprout);
dbms_output.put_line(v_inprout1);
if trim(v_inprout)=trim(v_inprout1) then
dbms_output.put_line('hehe');
delete from kaoqin_temp where door='部门门' and id in(v_id,v_id+1);
update kaoqin_temp set id=v_id+1 where door='正大门';
dbms_output.put_line('haha');
end if;
v_id:=v_id+1;
end loop;
dbms_output.put_line('hehe');dbms_output.put_line('haha'); 都执行了,但中间的两条sql语句没有执行,这是为什么
下面是表kaoqin_temp中的数据:
id time name card_num door in_or_out
1 01-AUG-16 06.35.00.000000 PM 张小平 1111111 部门门 正常出门
2 01-AUG-16 06.45.00.000000 PM 张小平 1111111 正大门 正常出门
3 01-AUG-16 07.45.00.000000 PM 张小平 1111111 正大门 正常进门
4 01-AUG-16 07.55.00.000000 PM 张小平 1111111 部门门 正常进门
提示的错误是第12行代码会返回多行数据。还有我测试的时候发现if条件里的sql语句没有执行。 展开
2016-09-23
展开全部
你把你这两个 dbms输出的语句注释掉试下,你这两个语句后面都有封号,不是代表if语句已经结束了吗
更多追问追答
追问
没有用的,这句dbms_output.put_line('haha');
都执行了
追答
因为这句后面有个封号...
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
2016-09-23
展开全部
应该是执行了,只是没有符合条件的数据。查看你的SQL条件,有满足的数据么?
更多追问追答
追问
1 1 01-AUG-16 06.35.00.000000 PM 张小平 1111111 卫星导航事业部 部门门 正常出门
2 2 01-AUG-16 06.45.00.000000 PM 张小平 1111111 卫星导航事业部 正大门 正常出门
这是表里面的数据
追答
update kaoqin_temp set id=v_id+1 where door='正大门';
你的id 应该是主键吧, 这个update的语句 满足条件的有多条数据, 所以update不能成功执行。 根据你要更新的数据,再添加限制条件
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询