--用case when else判斷是否插入隨機生成的考勤記錄
create or replace procedure mytest_restorekq as
kssj date;
jssj date;
tmpsj date;
amnum int;
pmnum int;
cursor cs is select sfz,zwbh from ncldlpx where xxid='0001' and pxqb='2013001';
begin
select pxkssj into kssj from kbqb where xxid='0001' and qb='2013001';
select pxjssj into jssj from kbqb where xxid='0001' and qb='2013001';
for c in cs loop--for迴圈巢狀while loop迴圈需插入臨時變數。
tmpsj:=kssj;
while tmpsj<=jssj loop
select count(*) into amnum from zw_kq where ksj between to_date(to_char(tmpsj,'yyyy-mm-dd')||' '||'07:00:00','yyyy-mm-dd hh24:mi:ss') and
to_date(to_char(tmpsj,'yyyy-mm-dd')||' '||'09:00:00','yyyy-mm-dd hh24:mi:ss') and zwbh=c.zwbh and sfz=c.sfz;
select count(*) into pmnum from zw_kq where ksj between to_date(to_char(tmpsj,'yyyy-mm-dd')||' '||'17:00:00','yyyy-mm-dd hh24:mi:ss') and
to_date(to_char(tmpsj,'yyyy-mm-dd')||' '||'19:00:00','yyyy-mm-dd hh24:mi:ss') and zwbh=c.zwbh and sfz=c.sfz;
case when amnum=0 then insert into zw_kq(ksj,type,zwbh,sfz,qdtype) values(to_date(to_char(tmpsj,'yyyy-mm-dd')||' '||'07:'||round(dbms_random.value(50,59),0)||':'||round(dbms_random.value(0,59),0),'yyyy-mm-dd hh24:mi:ss'),1,c.zwbh,c.sfz,'0');
when pmnum=0 then insert into zw_kq(ksj,type,zwbh,sfz,qdtype) values(to_date(to_char(tmpsj,'yyyy-mm-dd')||' '||'17:'||round(dbms_random.value(00,10),0)||':'||round(dbms_random.value(0,59),0),'yyyy-mm-dd hh24:mi:ss'),1,c.zwbh,c.sfz,'0');
else dbms_output.put_line('正常考勤');
end case;
--while loop 迴圈中插入case when then 語句塊,以end case 為結束標識。
tmpsj:=tmpsj+1;
end loop;
end loop;
end mytest_restorekq;
--select dbms_random.value from dual;
--oracle dbms_random函式自動產生隨機數
--oracle dbms_random.value(0,100) 函式自動產生0——100之間隨機數
使用游標 游標FOR迴圈
游標for迴圈是在pl sql塊中使用游標最簡單的方式,它簡化了對游標的處理。當使用游標for迴圈時,oracle會隱含的開啟游標,提取游標資料並關閉游標。例子 顯示emp表所有雇員名及其工資 declare cursor emp cursor isselect ename,sal from emp...
Oracle 游標迴圈插入資料
遇到乙個需求統計歷史每個月底的資料插入到表中,查詢了資料發現使用游標會很方便,記錄一下解決思路 先查出每個月月底的日期作為條件 select to char lastday,yyyy mm dd lastday from select last day add months to date 2014...
Oracle使用游標
了解一下訪問資料庫的ddl和tcl語句 一。plsql中使用select語句,應該與into字句連用,查詢出的返回值賦予into子句中的變數 變數的宣告是在delcare中 二。type屬性 在plsql中可以將變數和常量宣告為內建或使用者定義的資料型別,以引用乙個列名,同時繼承他的資料型別和大小。...