存储过程实现红绿灯变化
declare
v_count1 varchar(20);
v_count2 varchar(20);
v_count3 varchar(20);
v_color varchar(20);
v_mdate varchar(20);
v_mtime varchar(20);
begin
v_count1 := 60;
v_count2 := 30;
v_count3 := 0;
LOOP
if v_count1 - v_count2 = 30 then
insert into HLD_T1 a(color,mdate,mtime) select 'RED', to_char(sysdate,'yyyymmdd'),to_char(sysdate,'hhmmss') from dual;
select a.color into v_color from HLD_T1 a;
select a.mdate into v_mdate from HLD_T1 a;
select a.mtime into v_mtime from HLD_T1 a;
dbms_output.put_line(v_color||' '||v_mdate||' '||v_mtime);
v_count2 := v_count2+60;
dbms_lock.sleep(30);
if v_count2 = 90 then
delete from HLD_T1 where color = 'RED';
insert into HLD_T1 a(color,mdate,mtime) select 'GREEN', to_char(sysdate,'yyyymmdd'),to_char(sysdate,'hhmmss') from dual;
select a.color into v_color from HLD_T1 a;
select a.mdate into v_mdate from HLD_T1 a;
select a.mtime into v_mtime from HLD_T1 a;
dbms_output.put_line(v_color||' '||v_mdate||' '||v_mtime);
v_count3 := v_count3+30;
dbms_lock.sleep(20);
if v_count3 = 30 then
delete from HLD_T1 where color = 'GREEN';
insert into HLD_T1 a(color,mdate,mtime) select 'YELLOW', to_char(sysdate,'yyyymmdd'),to_char(sysdate,'hhmmss') from dual;
select a.color into v_color from HLD_T1 a;
select a.mdate into v_mdate from HLD_T1 a;
select a.mtime into v_mtime from HLD_T1 a;
dbms_output.put_line(v_color||' '||v_mdate||' '||v_mtime);
dbms_lock.sleep(10);
delete from HLD_T1 where color = 'YELLOW';
end if;
end if;
end if;
exit when v_count3 =30;
end loop;
end;

浙公网安备 33010602011771号