谁有关于Oracle的练习题??最好有关于函数.过程...等等的题目?
- 提问者网友:伴风望海
- 2021-04-23 04:11
- 五星知识达人网友:毛毛
- 2021-04-23 04:31
--1.定义一个变量存放员工编码,如果超过了存储的范围。
--捕获value_error 的异常。
--2.自定义异常,如果修改员工工资时,工资超过了8万,
--则触发自定义异常:显示月薪不能是超过8万
--3、显示游标的使用:在语句块中实现员工表的加薪功能,具体加薪办法。
--薪水小于1000的加2500,薪水小于3000的加1000,大于等于3000的不加
--4、动态游标的使用:
--(1)先在语句块中用动态SQL创建表,用动态SQL向表中添加记录;
--(2)然后用动态游标实现记录的提取并显示出来。
--5.实现针对员工信息表计算工资功能的实现
要求:用过程实现
实现方法:
-- 1、创建员工应扣工资表ksal包含字段(员工编号,日期,工资)
--并插入测试数据。(自已建)
-- 2、创建员工实发工资表,包含字段(员工编号,日期,工资),
--实发工资数据是过程中插入的(自已建)
--工资=emp.sal+emp.comm-ksal.工资
3、实发工资的计算方法,实发工资=应发工资-应扣工资,应发工资为员工表(emp)里的SAL+COMM
--7369举例
--应发工资 select sal+nvl(comm,0) into factsal from emp where empno = 7369;
--factsal = 3000
--实际工资 select 2300-sum(ksal)from ksal where kno = 7788
--and extract(year from kdate) = 2008 and extract(month from kdate) = 5;
4、创建过程。实现员工的月工资的计算。过程带两个参数,年,月。
5、实现后并测试。
--6.编写一个计算员工应缴所得税的函数,
--传入员工的编号,返回该员工应缴纳的个人所得税。
--个人所得税计算方式如下:
工资 所得税
1600以下 0
1600-3000 工资的5%-75
3000-5000 工资的7.5%-125
5000以上 工资的10%-165
--7、建立一个存储过程用来接收一个员工号,
--返回他的工资和他所在部门的平均工资并作为传出参数传出。
--8、建立一个存储过程用来接收一个部门号,
--找出其中的两位最老的员工的员工号,并打印。
--9、编写一个过程用来传入一个员工号,
--在emp表中删除一个员工,当该员工是该部门的最后一个员工时
--就在dept表中删除该员工所在的部门。
--10.有一玩具表:
toys(ID varchar2(5),name varchar2(20),price number)
创建一个程序包,包含一个过程和一个函数
,将过程和函数分别命名为UpdatePrice和AvgPrice。
函数用于计算所有玩具的平均价格;
过程应将单价低于400的玩具单价增加20%,若单价高于600元的,
将玩具名称和单价显示出来
--11、建立一个数据包,包含如下方法。
一个由表变量类型,可以装载emp表
一个游标,包含emp表的所有纪录。
一个给emp表插入纪录的方法。
一个删除emp表纪录的方法。
一个接收部门号,并用ref cursor返回部门所有员工的方法
设计一个方法,使用游标
--12、创建一个EMP表的备份表,创建触发器,实现EMP表与备份表的同步操作
--13创建一个U_LOG日志表,
--实现SCOTT的模式触发器。
--进行模式下面对象删除的日志管理
--14.编写一个触发器实现如下功能:
--对修改职工薪金的操作进行合法性检查:
-- a) 修改后的薪金要大于修改前的薪金
--b) 工资增量不能超过原工资的10%
-- c) 目前没有单位的职工不能涨工资
--15. 在emp表上编写一个触发器,实现如下功能:
--当插入或删除的职工记录属于10号部门时,
--记录下操作时间,语句的种类(插入/删除),
--和涉及的员工号
附加题目:
1.写一个SQL语句块,要求如下:
a.动态创建一个表savesql,其中该表包含两个字段
sqlid number(4),sqlstr varchar2(200)
b.动态给该表添加一条记录
如: sqlid sqlstr
001 select * from emp where empno=7369;
c.要求写一个动态游标,打印出该表的记录
d.要求动态打印出表savesql的sqlstr值的查询结果。
2.写一个SQL语句块,要求如下:
a.动态创建一个表savesql,其中该表包含两个字段
sqlid number(4),sqlstr varchar2(200)
b.动态给该表添加一条记录
如: sqlid sqlstr
001 select * from emp;
c.要求写一个动态游标,打印出该表的记录
d.要求动态打印出表savesql的sqlstr值的查询结果。
用程序包、存储过程、函数实现分页
- 1楼网友:从此江山别
- 2021-04-23 04:51