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培训练习题相关推荐

  1. Oracle PL/SQL教程(中科院西安网络中心培训部)

    我在06年公开了中科院西安网络中心培训部的Oracle SQL培训课件,发布到了IT PUB和CNOUG上,受到了的许多 Oracle爱好者的欢迎和支持.现在应大家的要求,我将Oracle PL/SQ ...

  2. oracle基础-基本的查询,以及pl/sql登录

    刚刚接触oracle,尽管也是关系型数据库,但是和mysql也有一定的差别,刚刚开始学就被一些专有的名词搞的头晕,今天登录pl/sql的时候半天找不到scott这个用户的信息,后来登录了半天发现密码出 ...

  3. 常用的PL/SQL开发原则 by dbsanke

    在微博上看到dbsnake 有一个培训,因为是在北京举办的,过去不.所以问dbsnake 能否把相关的文档传我一份. dbsnake 邮件给我时说有些东西没有写到文档里. 这个文档也是dbsnake ...

  4. oracle数据库sql培训,Oracle数据库SQL语言实战培训教程(全面、详细、案例、精讲)套餐...

    风哥oracle数据库SQL语言实战培训教程(案例.精讲)套餐,DBA必备技能. 套餐介绍: 风哥Oracle数据库SQL语言实战培训教程(案例.精讲)套餐,DBA必备技能. 内容: SQL语言基础入 ...

  5. SQL面试练习题一(基础)

    这篇文章中具体使用的是PL/SQL语法,之前一直放在Oracle分类中.但是考虑到如今SQL Server,MySQL都支持windows functions了(有时也叫analytic functi ...

  6. 关于PL/SQL我写了一份从0到1的入门教程

    PL/SQL 什么是PL/SQL ​ 许多时候我们会利用结构化查询语言(SQL)来访问和操作关系型数据库.这种语言的特点就是非过程化.也就是说使用的时候不用指明执行的具体方法和途径,即不用关注任何的实 ...

  7. 线上分享丨自治时代DBA的技能库:SQL和PL/SQL的深度编程(附上期PPT和视频)-云和恩墨大讲堂201905...

    云和恩墨大讲堂又和大家见面了! 2018年云和恩墨大讲堂走过了祖国的大好河山,从大连到海口,从上海到昆明--不知道我们的课堂里有没有出现过你的身影. 2019我们也不会停下分享的脚步.不过这一次,我们 ...

  8. 判断题:oracle自带的sql语言环境是pl/sql,习题库简介

    Ⅰ 数据库练习题 答案如下: Ⅱ 数据库练习题 (1)查询教师号来为T1老师教授自课程的课程号和课程名. SELECT TC.CNo,C.CN FROM T left join TC on t.TNo ...

  9. pl sql developer 使用技巧、快捷键 .

    pl sql developer 使用技巧.快捷键 1..登陆后默认自动选中My Objects 默认情况下,PLSQL Developer登录后,Brower里会选择All objects,如果你登 ...

最新文章

  1. Shiro源码学习之二
  2. 资料分享:送你一本《数据结构(C语言版)》电子书!
  3. html5摒弃的标记,5 HTML5的列表标记
  4. 从VirtualBox虚拟主机访问NAT客户机的方法
  5. c++变量重新赋值_Java基础二:一文讲透变量与数据类型
  6. 目前我们再用的即时通讯软件
  7. 信息学奥赛一本通 1088:分离整数的各个数 | OpenJudge NOI 1.5 28:分离整数的各个数位
  8. 在CentOS上配置Percona XtraDB集群(Percona XtraDB Cluster)
  9. 按职称分类统计人数access_500万人!2021会计职称报考人数要“爆”,通过率或刷新低...
  10. C语言编写的爱心代码
  11. HTML页面模板代码
  12. 开关稳压器工作原理与典型应用电路分析——LM2576、LM2596与LM2577
  13. dell n5110 触摸板驱动
  14. 正交试验设计例题及答案_正交试验设计中的方差分析-例题分析
  15. 十二进制加计数器-20151112
  16. 如何给centos设置中文、如何给火狐浏览器设置中文
  17. Java程序语言(基础篇)第2章 基本程序设计 编程练习题解答
  18. 最后一批90后开始养生了,中医科普短视频会火吗?
  19. 日均5亿查询量,京东到家订单中心ES架构演进
  20. JS,统计图表大全--三、饼形图(饼图及环形图)

热门文章

  1. VTK:图片之ResizeImageDemo
  2. OpenCV使用VideoCapture和VideoWriter的实例(附完整代码)
  3. OpenCV级联分类器Cascade Classifier
  4. C++打印一个螺旋形的矩阵 a matrix traversing it spirally算法(附完整源码)
  5. QT的 QAndroidJniObject类的使用
  6. 经典C语言程序100例之四零
  7. android自助终端界面_ZTHP500 | 桌面式人脸消费终端
  8. MyEclipse9安装Checkstyle5.5插件(图解)
  9. ubuntu常用的命令
  10. CXF wsdl2Java