Oracle练习题(九)

(1) 创建一个存储过程,以员工号为参数,输出该员工的工资

--创建存储过程create or replace procedure print_sal(n number) asval_sal emp.sal%type;begin select emp.sal into val_sal from emp where empno = n;dbms_output.put_line(n||'号员工的工资为:'||val_sal);end;--执行exec print_sal(7499);

(2) 创建一个存储过程,以员工号为参数,修改该员工的工资。若该员工属于10号部门,则工资增加150;若属于20号部门,则工资增加200;若属于30号部门,则工资增加250;若属于其他部门,则增加300。

--创建存储过程create or replace procedure pro_update_sal(n number) asval_deptno emp.deptno%type;begin  select deptno into val_deptno from emp where empno=n;case val_deptnowhen 10 then update emp set sal=sal+150 where empno = n;when 20 then update emp set sal=sal+200 where empno = n;when 30 then update emp set sal=sal+250 where empno = n;elseupdate emp set sal=sal+300 where empno = n;end case;end;--执行exec pro_update_sal(7499);

(3) 创建一个程,以员工号为参数,返回该员工的工作年限(以参数形式返回)。

--创建存储过程create or replace procedure pro_return_year(n number,yeartime out varchar2) asbeginselect to_char(sysdate,'YYYY')-to_char(emp.hiredate,'YYYY') into yeartime from emp where empno = n;end;--声明变量,接受工作年限的值var a varchar2;--执行exec pro_return_year(7499,:a);

(4) 使用无参游标cursor,查询所有员工的姓名和工资

--创建游标。1创建游标2打开游标3存取游标4关闭游标create or replace procedure pro_select_name_and_sal ascursor cur_emp is select ename,sal from emp;val_name emp.ename%type;val_sal emp.sal%type;begin open cur_emp;fetch cur_emp into val_name,val_sal;while cur_emp%found loopdbms_output.put_line('姓名:'||val_name||'工资:'||val_sal);fetch cur_emp into val_name,val_sal;end loop;close cur_emp;end;--执行exec pro_select_name_and_sal;

(5) 创建语句级触发器,当对emp表进行delete操作后,显示"world hello"

--创建触发器create or replace trigger tri_delete after delete on emp begindbms_output.put_line('world hello');end; --删除时触发delete from emp where deptno = 10;

(6) 周一到周五,且9-17点能向数据库插入数据,否则显示异常提示

--创建触发器create or replace trigger tri_check before insert or delete or update on empbeginif to_char(sysdate,'d') in ('1','7') thenraise_application_error(-20000,'不能在非工作日更改员工信息,上班时间为周一到周五9-17点');elsif to_char(sysdate,'hh24:mi:ss') not  between '9:00:00' and '17:00:00' thenraise_application_error(-20000,'不能在非上班时间更改员工信息,上班时间为周一到周五9-17点');end if;end;--删除时触发delete from emp where deptno = 10;

(7) 创建行级触发器,涨后工资这一列,确保大于涨前工资

--创建行级触发器create or replace trigger tri_test before update on emp for each row begin if :old.sal>:new.sal then raise_application_error(-20001,'更新失败,涨后工资小于涨前工资!');end if;end;--触发update emp set sal = sal-100 where empno = 7499;

Oracle练习题(九)相关推荐

  1. Oracle 练习题 20131021 for 循环练习

    --Oracle 练习题 20131021 for 循环练习 --1.用for循环实现一个倒置的乘法表. begin for i in reverse 1 .. 9 loop for j in rev ...

  2. Oracle练习题(三)

    Oracle练习题(三) 说明:以下查询以scott模式下emp表和dept表为操作对象 (1) 查询一个月前入职的员工 select * from emp where months_between( ...

  3. Oracle练习题(七)

    Oracle练习题(七) (1) 创建表student(sno,sname,sage,ssex,address) 其中sno为主键,并使用序列自动生成sno. create table student ...

  4. joa运行oracle,蚂蚁金服自研数据库OceanBase登顶全球第一,打破Oracle维持九年的世界纪录...

    蚂蚁金服自研数据库OceanBase登顶全球第一,打破Oracle维持九年的世界纪录 2019年10月25日来源:新智元 DQoJCQkJCQkJPGEgaHJlZj0iaHR0cDovL3Nucy5 ...

  5. Oracle 练习题 20131017

    --2013-10-17 练习题 --1.输入一个年份,判断其是不是闰年,并做相应的提示. --方法一:正常算 declare v_year number := 1900; begin if mod( ...

  6. Oracle 练习题P256

    --根据Oracle数据库scott模式下的emp表和dept表,完成下列操作. --(1)查询20号部门的所有员工信息 select * from emp where deptno = 20; -- ...

  7. oracle练习题(二)

    -----------------------练习一-------------------------------------------------------------- 1.写一个查询,用首字 ...

  8. oracle练习题-emp表

    –用SQL完成以下问题列表: –1.列出至少有一个员工的所有部门. –2.列出薪金比"SMITH"多的所有员工. –3.列出所有员工的姓名及其直接上级的姓名. –4.列出受雇日期早 ...

  9. 蓝桥杯练习题九 - REPEAT 程序(c++)

    题目如下 附件 prog.txt 中是一个用某种语言写的程序.附件在本文的末尾. 其中 REPEAT k 表示一个次数为 k 的循环.循环控制的范围由缩进表达,从次行开始连续的缩进比该行多的(前面的空 ...

最新文章

  1. 深入理解Java中的内存泄漏
  2. 一个游戏客户端文件的字节加解密代码,我花1000元请人解的,存在这,以后应该用得到。...
  3. 【NLP】向量检索模型落地:瓶颈及解法!
  4. Netflix测试有线电视频道、字节11亿入股掌阅、快手香港IPO、王者荣耀日活破一亿等|Decode the Week...
  5. 用php求n个分数的和,php关于数组n个随机数分成x组,使每组值相近的算法
  6. 阿里云OSS linux使用备忘录
  7. 操作系统之进程管理:13、吸烟者问题
  8. ntko web firefox跨浏览器插件_Firefox火狐浏览器插件全部失效解决方法
  9. 数据库原理—关系模型的数据操作(八)
  10. java 线程中断的方法_Java中断线程的方法
  11. h5判断百度、高德、腾讯地图客户端是否安装及调起客户端导航
  12. 第三方登陆之微博登录
  13. TortoiseSVN patch 创建并应用补丁
  14. 脉冲宽度调制(PWM)和DAC转换练习
  15. 程设刷题 | 程序设计实践II-2017(部分)
  16. 小程序开发-准备工作
  17. MyBatis面试题及答案
  18. Unity中使用另一个遮罩方案解决Mask组件的锯齿现象
  19. 修改WSL的Ubuntu环境下ls显示的文件夹文字颜色和背景色
  20. yo : 无法加载文件 D:\MyDev\Nodejs\node_global\yo.ps1,因为在此系统上禁止运行脚本。有关详细信息,请参阅 https:/go.micros oft.com/fwl

热门文章

  1. HTML5 移动页面自适应手机屏幕四种方法(禁止html5手机端双击页面放大的问题)
  2. MD5加密——代码实现
  3. django批量修改table_django restframework 多对多的批量修改,基于逻辑删
  4. 流行病学名词解释和简答题集锦
  5. 外网怎么访问公司内网的数据库?
  6. Myeclipse9.0 正式版64位JDK 之win7下的完美破解
  7. linux ps aux tty,linux ps命令中的tty表示什么意思?
  8. 设置CRT使用Console连接网络设备
  9. ARP欺骗实验-Wireshark-长角牛网络监控
  10. [转]孙悟空无姓无名的时候,阎王生死簿是怎么写的呢?