Oracle练习题(九)
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练习题(九)相关推荐
- Oracle 练习题 20131021 for 循环练习
--Oracle 练习题 20131021 for 循环练习 --1.用for循环实现一个倒置的乘法表. begin for i in reverse 1 .. 9 loop for j in rev ...
- Oracle练习题(三)
Oracle练习题(三) 说明:以下查询以scott模式下emp表和dept表为操作对象 (1) 查询一个月前入职的员工 select * from emp where months_between( ...
- Oracle练习题(七)
Oracle练习题(七) (1) 创建表student(sno,sname,sage,ssex,address) 其中sno为主键,并使用序列自动生成sno. create table student ...
- joa运行oracle,蚂蚁金服自研数据库OceanBase登顶全球第一,打破Oracle维持九年的世界纪录...
蚂蚁金服自研数据库OceanBase登顶全球第一,打破Oracle维持九年的世界纪录 2019年10月25日来源:新智元 DQoJCQkJCQkJPGEgaHJlZj0iaHR0cDovL3Nucy5 ...
- Oracle 练习题 20131017
--2013-10-17 练习题 --1.输入一个年份,判断其是不是闰年,并做相应的提示. --方法一:正常算 declare v_year number := 1900; begin if mod( ...
- Oracle 练习题P256
--根据Oracle数据库scott模式下的emp表和dept表,完成下列操作. --(1)查询20号部门的所有员工信息 select * from emp where deptno = 20; -- ...
- oracle练习题(二)
-----------------------练习一-------------------------------------------------------------- 1.写一个查询,用首字 ...
- oracle练习题-emp表
–用SQL完成以下问题列表: –1.列出至少有一个员工的所有部门. –2.列出薪金比"SMITH"多的所有员工. –3.列出所有员工的姓名及其直接上级的姓名. –4.列出受雇日期早 ...
- 蓝桥杯练习题九 - REPEAT 程序(c++)
题目如下 附件 prog.txt 中是一个用某种语言写的程序.附件在本文的末尾. 其中 REPEAT k 表示一个次数为 k 的循环.循环控制的范围由缩进表达,从次行开始连续的缩进比该行多的(前面的空 ...
最新文章
- 深入理解Java中的内存泄漏
- 一个游戏客户端文件的字节加解密代码,我花1000元请人解的,存在这,以后应该用得到。...
- 【NLP】向量检索模型落地:瓶颈及解法!
- Netflix测试有线电视频道、字节11亿入股掌阅、快手香港IPO、王者荣耀日活破一亿等|Decode the Week...
- 用php求n个分数的和,php关于数组n个随机数分成x组,使每组值相近的算法
- 阿里云OSS linux使用备忘录
- 操作系统之进程管理:13、吸烟者问题
- ntko web firefox跨浏览器插件_Firefox火狐浏览器插件全部失效解决方法
- 数据库原理—关系模型的数据操作(八)
- java 线程中断的方法_Java中断线程的方法
- h5判断百度、高德、腾讯地图客户端是否安装及调起客户端导航
- 第三方登陆之微博登录
- TortoiseSVN patch 创建并应用补丁
- 脉冲宽度调制(PWM)和DAC转换练习
- 程设刷题 | 程序设计实践II-2017(部分)
- 小程序开发-准备工作
- MyBatis面试题及答案
- Unity中使用另一个遮罩方案解决Mask组件的锯齿现象
- 修改WSL的Ubuntu环境下ls显示的文件夹文字颜色和背景色
- yo : 无法加载文件 D:\MyDev\Nodejs\node_global\yo.ps1,因为在此系统上禁止运行脚本。有关详细信息,请参阅 https:/go.micros oft.com/fwl
热门文章
- HTML5 移动页面自适应手机屏幕四种方法(禁止html5手机端双击页面放大的问题)
- MD5加密——代码实现
- django批量修改table_django restframework 多对多的批量修改,基于逻辑删
- 流行病学名词解释和简答题集锦
- 外网怎么访问公司内网的数据库?
- Myeclipse9.0 正式版64位JDK 之win7下的完美破解
- linux ps aux tty,linux ps命令中的tty表示什么意思?
- 设置CRT使用Console连接网络设备
- ARP欺骗实验-Wireshark-长角牛网络监控
- [转]孙悟空无姓无名的时候,阎王生死簿是怎么写的呢?