create or replace procedure aa is
bb number;
cursor cur is
select t.id,v.description from t_user t ,v_userdep v where t.removed=0 and t.login_name = substr(v.login_name,1,12);
begin
for c in cur loop
bb := 0;
select count(*) into bb from t_user_temp s where s.id = c.id;
dbms_output.put_line(bb);
if(bb<=0) then
insert into t_user_temp s (s.id,s.name) values(c.id,c.description);
commit;
else
update t_user_temp s set s.name = s.name || ',' || c.description where s.id=c.id;
end if;
end loop;
end aa;
CREATE OR REPLACE PROCEDURE F_holiday is
cursor mycursor is select t.hol_days,t.hol_days_left,t.hol_days_wait,t.hol_id,t.remark from t_hol_holiday t where t.removed=0 ;
t_mycursor mycursor%ROWTYPE;
begin
-- strSql:='select t.hol_days,t.hol_days_left,t.hol_days_wait,t.hol_id,t.remark from t_hol_holiday t where t.removed=0 ';
open mycursor;
--FETCH v_mysursor INTO holDays,holDaysLeft,holDaysWait,holId,remark;
Loop
FETCH mycursor INTO t_mycursor;
exit when mycursor%NOTFOUND;
-- WHILE v_mysursor%FOUND LOOP
insert into t_hol_holiday (ID,hol_year,hol_days,hol_days_left,hol_days_wait,removed,operator,operate_time,hol_id,hol_state,remark) values (sys_guid(),'2011',t_mycursor.hol_days,t_mycursor.hol_days,t_mycursor.hol_days,'0','1156',to_char(sysdate,'yyyy-mm-dd hh24:mi:ss'),t_mycursor.hol_id,'725',t_mycursor.remark);
End LOOP;
close mycursor; --关闭游标
EXCEPTION
WHEN NO_DATA_FOUND THEN
null;
WHEN OTHERS THEN
-- Consider logging the error and then re-raise
RAISE;
end F_holiday;
CREATE OR REPLACE PROCEDURE rrrr is
cursor mycursor is select t.mc_dx from t_func_xt_ywdxsm t ;
t_mycursor mycursor%ROWTYPE;
begin
-- strSql:='select t.hol_days,t.hol_days_left,t.hol_days_wait,t.hol_id,t.remark from t_hol_holiday t where t.removed=0 ';
open mycursor;
--FETCH v_mysursor INTO holDays,holDaysLeft,holDaysWait,holId,remark;
Loop
FETCH mycursor INTO t_mycursor;
exit when mycursor%NOTFOUND;
-- WHILE v_mysursor%FOUND LOOP
insert into t_rectification_user_conf (reserve1,removed) values(t_mycursor.mc_dx,0);
End LOOP;
close mycursor; --关闭游标
EXCEPTION
WHEN NO_DATA_FOUND THEN
null;
WHEN OTHERS THEN
-- Consider logging the error and then re-raise
RAISE;
end rrrr;
test 窗口 在下方输入 测试数据 执行后即可
command 窗口中 如下执行
set serveroutput on
SQL> declare
2 i number;
3 begin
4 pro_test(1,i);
5 dbms_output.put_line(i);
6 end;
7 /
create or replace procedure testt is
cursor cur is
select * from c_contract c where c.removed = 0 and c.contract_price is not null;
n number;
begin
begin
n:=1;
dbms_output.put_line (n);
for c in cur loop
dbms_output.put_line (c.id);
n := to_number (c.contract_price);
end loop;
end;
end testt;