日期:2014-05-16 浏览次数:20498 次
Oracle一个表中对应输入的数据对比做出想对应的操作 出自
http://topic.csdn.net/u/20120712/14/7ff39445-a8bc-46fd-a984-64114b2c8e90.html?94669
表table有一个number字段的a
存储过程test有一个变量x。\
如果table表a字段有大于x的纪录y个,那么向A表插入y条a字段等于x的纪录
如果a字段没有大于x的纪录,则a字段全部加100。
好了直接上测试数据
SQL> select * from t; A ---------- 1382.4 1920 1500 2975 1500 2850 2940 5000 1800 1320 1368 1560 已选择12行。 SQL> create or replace procedure emp_test 2 ( 3 x number 4 ) 5 is 6 v_a employee.salary%type; 7 v_count number; 8 i number; 9 begin 10 i:=0; 11 select count(a) into v_count from t where a>x; 12 if v_count >0 then 13 for i in 1..v_count loop 14 insert into t (a) values (x); 15 end loop ; 16 else 17 update t set a=a+100 ; 18 end if; 19 end; 20 / 过程已创建。 SQL> exec emp_test(9000) PL/SQL 过程已成功完成。 SQL> select * from t; A ---------- 1482.4 2020 1600 3075 1600 2950 3040 5100 1900 1420 1468 1660 已选择12行。 SQL> exec emp_test(3000) PL/SQL 过程已成功完成。 SQL> select * from t; A ---------- 1482.4 2020 1600 3075 1600 2950 3040 5100 1900 1420 1468 1660 3000 3000 3000 已选择15行。