日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

某pl/sql培训练习题

發布時間:2024/9/20 编程问答 37 豆豆
生活随笔 收集整理的這篇文章主要介紹了 某pl/sql培训练习题 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

1、?寫一個存儲過程,向表中隨機插入1000條記錄
SerialNo:使用序列方式,自增長。
Filepath:使用隨機插入6個字母
Partid: 使用隨機4位數字
StaffNo:從YTCZ060001……. YTCZ060020 中隨機抽取
RecordTime:從2011年8月1日之前的6個月中隨機抽取。
2、寫一個程序塊,循環調用500次此存儲過程,保證數據表中存儲50萬條記錄。
3、寫一個存儲過程,刪除3個月前的數據。
4、寫一個job,每隔30天凌晨2點整,系統執行“刪除3個月前數據”的存儲過程。

--下面的結果僅供參考:

(SerialNo:使用序列方式,自增長。)
1.創建一個序列
-- Create sequence
? create sequence seq_class
? minvalue 1
? maxvalue 100000000000
? start with 201101
? increment by 1
? cache 20;
.序列的使用
?? select seq_class.nextval from dual;?? --使用下個值
?? select seq_class.currval from dual;?? --使用當前值
.刪除序列
? drop SEQUENCE seq_class;

2.錄音表:
create table recordfile(
?????? SerialNo?? VARCHAR2(200) primary key,
?????? FilePath?? VARCHAR2(400),
?????? Partid???? Varchar2(40),?
?????? StaffNo?? VARCHAR2(100),?
?????? RecordTime?DATE
);

3.存儲過程,向表中隨機插入1000條記錄

create or replace procedure p_random_corder
?is
? MAXRECORDS CONSTANT INT :=1000;
? I INT :=2;
BEGIN
? FOR I IN 2..MAXRECORDS LOOP
??? insert into recordfile(serialno,filepath,partid,staffno,recordtime)
??? values('2011'||seq_class.nextval,
??????? upper(chr(trunc(dbms_random.value(97,122))))||
??????? upper(chr(trunc(dbms_random.value(97,122))))||
??????? upper(chr(trunc(dbms_random.value(97,122))))||
??????? upper(chr(trunc(dbms_random.value(97,122))))||
??????? upper(chr(trunc(dbms_random.value(97,122))))||
??????? upper(chr(trunc(dbms_random.value(97,122)))),
??????? 'YTCZ'||trunc(dbms_random.value(60001,60020)),
??????? floor(abs(trunc(dbms_random.value(1000,9999)))) ,
???? to_date('2011-0'||
???? case?when? trunc(dbms_random.value(2,8))=2 then '2'||'-'||floor(abs(trunc(dbms_random.value(1,28))))
???????????? when? trunc(dbms_random.value(2,8))=3 then '3'||'-'||floor(abs(trunc(dbms_random.value(1,31))))
???????????? when? trunc(dbms_random.value(2,8))=4 then '4'||'-'||floor(abs(trunc(dbms_random.value(1,30))))
???????????? when? trunc(dbms_random.value(2,8))=5 then '5'||'-'||floor(abs(trunc(dbms_random.value(1,31))))
???????????? when? trunc(dbms_random.value(2,8))=6 then '6'||'-'||floor(abs(trunc(dbms_random.value(1,30))))
???????????? when? trunc(dbms_random.value(2,8))=7 then '7'||'-'||floor(abs(trunc(dbms_random.value(1,31))))
???? end,'yyyy-mm-dd')
???? ) ;???
??? END LOOP;
??? DBMS_OUTPUT.PUT_LINE('成功插入記錄');
? commit;?
END;

/

4、?寫一個程序塊,循環調用500次此存儲過程,保證數據表中存儲50萬條記錄。
set serveroutput on ;
?
? declare
??? --i integer;
? begin
??? --i := 1;
??? for i in 1..500 loop
?????? p_random_corder;
???? --commit;
??? end loop;
??? dbms_output.put_line('循環調用500次此存儲過程');
? end;???
/
5、?寫一個存儲過程,刪除3個月前的數據。
?create or replace procedure p_delete_threedata
?is
?begin
???? delete from recordfile where? RecordTime = trunc(add_months(sysdate,-3));
???? commit;
????
?exception
???? when others then
???? rollback;???
?end ;
/
6、寫一個job,每隔30天凌晨2點整,執行刪除數據的存儲過程。
DECLARE
??????? JobNum NUMBER(5) := 0;
??????? JobID? NUMBER(5);
BEGIN
? SELECT COUNT(*) INTO JobNum FROM DBA_JOBS WHERE UPPER(SUBSTRB(WHAT,1,30)) = UPPER('p_delete_threedata');
? IF JobNum > 0 THEN
??? SELECT NVL(JOB,0) INTO JobID FROM DBA_JOBS WHERE UPPER(SUBSTRB(WHAT,1,30)) = UPPER('p_delete_threedata');
??? IF JobID > 0 THEN
????? DBMS_JOB.REMOVE(JobID);
??? END IF;
? END IF;

? DBMS_JOB.SUBMIT(JobID, 'p_delete_threedata;', trunc(sysdate,'DD')+1+2/24, 'sysdate+30');
? COMMIT;
END;
/
?

轉載于:https://blog.51cto.com/srsunbing/631137

總結

以上是生活随笔為你收集整理的某pl/sql培训练习题的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。