收藏 分销(赏)

ORACLE企业面试编程题.doc

上传人:pc****0 文档编号:5731506 上传时间:2024-11-16 格式:DOC 页数:7 大小:54.50KB 下载积分:10 金币
下载 相关 举报
ORACLE企业面试编程题.doc_第1页
第1页 / 共7页
ORACLE企业面试编程题.doc_第2页
第2页 / 共7页


点击查看更多>>
资源描述
1、 用SQL语句创建上表(create table 方案名称.表名称 (字段1 数据类型 1,…… )) 2、写出一个匿名的SQL程序块,完成以下任务:向表中插入3000条记录,在SALARY字段中有500条记录的值为1000,500条记录的值为1200,1000条记录 的值为1500,1000条记录的值为1800 ID字段的值来自序列XL其他字段的值任意。 3、创建一个存储过程,应用上式所创建的函数,修改id在800到1200的记录的salary值。 4、用SQL语句创建一个视图,这个视图用来显示ID>1000的记录。 5、创建一个SYS用户中的函数fn1,函数的作用为:将指定ID号的记录中的SALARY字段的值乘以1.05。 6、建立一个存储过程,删除表中ID在特定范围内的记录(如:id>20,id<100)。并在SQL*PLUS WORKSHEET中执行这个存储过程。 7、用SQL语句创建一个视图,这个视图用来显示id>1000的记录。 8、假设已经创建好序列system.xl,写出一个匿名的PL/SQL程序块,完成一次向数据表中插入3000条记录,其中除ID字段取值不同外,其他字段取相同值。 9、创建一个system方案中的函数fn1,函数的作用为:将指定ID号的记录中的salary字段值乘以1.05。 10、写出一个存储过程,这个存储过程的作用是修改特定ID编号的记录,将该记录的SALARY字段的值加上500。 11.现有学生表stuInfo,班级表classInfo,表结构如下: stuInfo表:sid学号 int主键 自增 sname姓名 Varchar(30) 非空 sex性别 char(2) 只能插入0或1或空(“0”代表男,“1”代表女) birthday生日 dateTime 默认为系统时间 age入学年龄 int可为空 smoney缴费 int可为空 cid班级编号 int非空 外键 classInfo表: 班级编号cid int主键 自增 班级名称cname varchar(30) 非空 (1)、建立一个存储过程用来接收一个学生编号,返回他的年龄、性别(显示男或女,空值为男)和他所在班级的人数并作为传出参数传出。 (2)、建立一个存储过程用来接收一个班级编号,找出其中的两位最老的学生的姓名,并打印。若没有找到该班级编号信息,则打印”班级信息错误”,若找到班级编号,但该班级没有学生,则打印“该班级没有学生”。 (3)用存储过程实现对stuInfo表的分页显示。 12.物资信息管理系统据库如下: 数据库名:物资信息管理Materials 管理员表 User_Manager 列名 数据类型 长度 描述 User_ID int 用户ID(主键) User_Name varchar 50 登陆用户名,唯一 User_Pass varchar 10 登陆密码 User_Date datetime 账户创建时间(默认为当前系统时间),添加检查约束使创建账户的时间不能晚于当前的时间 领用科室表Department_Manager 列名 数据类型 长度 描述 Department_ID int 领用科室ID(主键) Department_Name Varchar 20 领用科室名称 Department_State int 缺省1(1:正常,0:销户) Department_Date datetime 领用科室注册时间(默认当前系统时间),限制角色的创建时间不能晚于当前的时间 领用记录表Consuming_Manager 列名 数据类型 长度 描述 Co_ID int 主键 User_ID int 外键-User_Manager Department_ID int 外键-Department_Manager Type_Id Int 缺省为1,(1:打印纸2:签字笔) Co_Quentity float 领用数量,缺省0 Co_Date datetime 领用时间(默认当前系统时间),限制时间不能晚于当前的时间 物品库存表Store_Manager 列名 数据类型 长度 描述 St_ID int 自增ID Type_Id Int 缺省为1,(1:打印纸2:签字笔) St_Quentity Float 物品库存数量 (1).查询领用记录中,编号为1的记录对应的系统管理员的姓名,领用科室姓名,领用科室注册时间,领用日期,领用产品种类(为Type_Id为1,则将此处的显示为“打印纸”,否则显示为“签字笔”), 领用产品数量 提示:使用 case –when (2).创建存储过程验证登陆系统管理员的用户与密码是否正确,若用户名不存在返回-1,若用户名存在但是密码错误返回0,若验证成功则返回用户的User_ID。 (3)创建存储过程-完成添加一条领用记录。记录添加过程中必须完成对领用库存表的添加或更新操作,若数据插入中间出现问题,请使用事务回滚 写出测试数据 (4)创建触发器,删除领用科室表中的一条数据,必须先删除领用记录表中所有对应于该领用科室的所有数据,然后才能删除领用科室。 写出测试语句 13.表className中有如下分类:  classID  className  1 衣服  2 裤子  5   帽子  10  鞋子  表productInfo有如下记录:  productID   productName     parentID    clickNum   1       男士衣服   1      90 --衣服类别中这条记录的点击率最高  2    女士衣服         1   80 3    男士裤子      2     70 4    女士裤子  2     90 --裤子类别中这条记录点击率最高  5    男士帽子   5     15 6  女士帽子   5   30 --帽子类别中这条点击率最高  7    男士鞋子 10   65 --鞋子类别中这条点击率最高  8    女士鞋子  10    52  9   女士鞋子1  10     54  使用存储过程实现:要求分别把衣服,裤子,帽子,鞋子这些类别中点击率最高的一条记录找出来,然后再降序排列,结果应如下: productID   productName   clickNum  1 男士衣服      90  4        女士裤子      90  7        男士鞋子      65 6       女士帽子      30  14.程序员工资表:ProWage 字段名称 数据类型 说明 ID int 自动编号,主键 PName Char(10) 程序员姓名 Wage int 工资 创建一个存储过程,对程序员的工资进行分析,月薪1500到10000不等,如果有百分之五十的人薪水不到2000元,给所有人加薪,每次加100,再进行分析,直到有一半以上的人大于2000元为止,存储过程执行完后,最终加了多少钱? 例如:如果有百分之五十的人薪水不到2000,给所有人加薪,每次加100元,直到有一半以上的人工资大于2000元,调用存储过程后的结果如图: 请编写PL/SQL来实现如下功能: 1)创建存储过程,查询是否有一半程序员的工资在2200、3000、3500、4000、5000或6000元之上,如果不到分别每次给每个程序员加薪100元,至之一半程序员的工资达到2200,3000,3500,4000,5000或6000元。 2)创建存储过程,查询程序员平均工资在4500元,如果不到则每个程序员每次加200元,至到所有程序员平均工资达到4500元。 15.某cc表数据如下: c1 c2 -------------- 1 西 1 安 1 的 2 天 2 气 3 好 …… 转换为 1 西安的 2 天气 3 好 要求:不能改变表结构及数据内容,仅在最后通过SELECT显示出这个查询结果 16. 用存储过程实现:对所有员工,如果该员工职位是MANAGER,并且在DALLAS工作那么就给他薪金加15%;如果该员工职位是CLERK,并且在NEW YORK工作那么就给他薪金扣除5%;其他情况不作处理 17.编写一个PL/SQL程序块,对直接上级是'BLAKE'的所有员工,按照参加工作的时间加薪: 81年6月以前的加薪10% 81年6月以后的加薪5% 19.用存储过程实现:根据员工在各自部门中的工资高低排出在部门中的名次(允许并列). 20.编写一个触发器实现如下功能: 对修改职工薪金的操作进行合法性检查: a) 修改后的薪金要大于修改前的薪金 b) 工资增量不能超过原工资的10% c) 目前没有单位的职工不能涨工资 21.编写一个PL/SQL程序块,对名字以"A"或"S"开始的所有雇员按他们的基本薪水的10%加薪。 22.编写一PL/SQL,对所有的"销售员"(SALESMAN)增加佣金500. 23.编写一PL/SQL,以提升两个资格最老的"职员"为"高级职员"。(工作时间越长,优先级越高) 24.编写一PL/SQL,对所有雇员按他们基本薪水的10%加薪,如果所增加的薪水大于5000,则取消加薪。 25.编写一个给特殊雇员加薪10%的过程,这之后,检查如果已经雇佣该雇员超过60个月,则给他额外加薪3000. 26.编写一个函数以检查所指定雇员的薪水是否有效范围内。不同职位的薪水范围为: Designation Raise Clerk 1500-2500 Salesman 2501-3500 Analyst 3501-4500 Others 4501 and above. 如果薪水在此范围内,则显示消息"Salary is OK",否则,更新薪水为该范围内的最低值。
展开阅读全文

开通  VIP会员、SVIP会员  优惠大
下载10份以上建议开通VIP会员
下载20份以上建议开通SVIP会员


开通VIP      成为共赢上传

当前位置:首页 > 考试专区 > 其他

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        抽奖活动

©2010-2026 宁波自信网络信息技术有限公司  版权所有

客服电话:0574-28810668  投诉电话:18658249818

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :微信公众号    抖音    微博    LOFTER 

客服