ImageVerifierCode 换一换
格式:DOC , 页数:8 ,大小:40KB ,
资源ID:3260239      下载积分:20 文钱
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,省得不是一点点
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.wenke99.com/d-3260239.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: QQ登录   微博登录 

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(PLSQL练习1.doc)为本站会员(11****ws)主动上传,文客久久仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知文客久久(发送邮件至hr@wenke99.com或直接QQ联系客服),我们立即给予删除!

PLSQL练习1.doc

1、OraclePL/SQL 面试题文章分类:数据库 一、 求 1-100 之间的素数set serveroutput ondeclareflag boolean:=true;beginfor i in 1.100 loopfor j in 2.i-1 loopif mod(i,j)=0 thenflag:=false;end if;end loop;if flag thendbms_output.put_line(i);end if;flag:=true;end loop;end;二、 对所有员工,如果该员工职位是 MANAGER,并且在 DALLAS 工作那么就给他薪金加 15;如果该员工职位

2、是 CLERK,并且在 NEW YORK 工作那么就给他薪金扣除 5;其他情况不作处理对所有员工,如果该员工部门是 SALES,并且工资少于 1500 那么就给他薪金加15;如果该员工部门是 RESEARCH,并且职位是 CLERK 那么就给他薪金增加5;其他情况不作处理 declarecursor c1 is select empno,sal,dname,job from emp e,dept d where e.deptno = d.deptno;c1rec c1%rowtype;beginfor c1rec in c1 loopif c1rec.dname = SALES and c1r

3、ec.sal 一条 SQL 语句select deptno,ename,sal,(select count(*) + 1from emp where deptno = a.deptno and sal a.sal) as ordfrom emp a order by deptno,sal desc;PL/SQL 块declare cursor cc isselect * from dept;ccrec cc%rowtype;cursor ck(no number) isselect * from emp where deptno = no order by sal desc;ckrec ck%

4、rowtype;i number;j number;v_sal number:=-1;beginfor ccrec in cc loopi := 0;for ckrec in ck(ccrec.deptno) loopi := i + 1;-写入临时表if ckrec.sal = v_sal then null;else j:=i;end if;-显示DBMS_OUTPUT.put_line(ccrec.deptno|chr(9)|ckrec.ename|chr(9)|ckrec.sal|chr(9)|j);v_sal := ckrec.sal; end loop; end loop;end;

5、四、编写一个触发器实现如下功能:对修改职工薪金的操作进行合法性检查:a) 修改后的薪金要大于修改前的薪金b) 工资增量不能超过原工资的 10%c) 目前没有单位的职工不能涨工资create or replace trigger tr1 after update of sal on empfor each rowbeginif :new.sal :old.sal * 1.1 thenraise_application_error(-20002,工资增量不能超过原工资的 10%);elsif :old.deptno is null thenraise_application_error(-2000

6、3,没有单位的职工不能涨工资);end if;end;四、 编写一个 PL/SQL 程序块,对名字以“A“或“S“开始的所有雇员按他们的基本薪水的 10%加薪。DECLARECURSOR c1 IS SELECT * FROM emp WHERE SUBSTR(ename,1,1)=A OR SUBSTR(ename,1,1)=S FOR UPDATE OF sal;BEGINFOR i IN c1LOOPUPDATE emp SET sal=NVL(sal,0)+NVL(sal,0)*0.1 WHERE CURRENT OF c1;END LOOP;END;/五、编写一 PL/SQL,对所有

7、的“销售员“(SALESMAN)增加佣金 500.DECLARECURSOR c1 IS SELECT * FROM emp WHERE job=SALESMAN FOR UPDATE OF sal;BEGINFOR i IN c1LOOPUPDATE emp SET sal=NVL(sal,0)+500 WHERE CURRENT OF c1;END LOOP;END;/六、编写一 PL/SQL,以提升两个资格最老的“职员“为“高级职员“。(工作时间越长,优先级越高)DECLARECURSOR c1 IS SELECT * FROM emp WHERE job=CLERK ORDER BY

8、hiredate FOR UPDATE OF job; -升序排列,工龄长的在前面BEGINFOR i IN c1LOOPEXIT WHEN c1%ROWCOUNT2;DBMS_OUTPUT.PUT_LINE(i.ename);UPDATE emp SET job=HIGHCLERK WHERE CURRENT OF c1;END LOOP;END;/七、编写一 PL/SQL,对所有雇员按他们基本薪水的 10%加薪,如果所增加的薪水大于 5000,则取消加薪。DECLARECURSOR c1 IS SELECT * FROM emp FOR UPDATE OF sal; BEGINFOR i

9、IN c1LOOPIF (i.sal+i.sal*0.1)60 THENvsal:=NVL(vsal,0)*1.1+3000;ELSEvsal:=NVL(vsal,0)*1.1;END IF;UPDATE emp SET sal=vsal WHERE empno=no;END;/VARIABLE no NUMBERBEGIN:no:=7369;END;/十、编写一个函数以检查所指定雇员的薪水是否有效范围内。不同职位的薪水范围为:Designation RaiseClerk 1500-2500Salesman 2501-3500Analyst 3501-4500Others 4501 and a

10、bove.如果薪水在此范围内,则显示消息“Salary is OK“,否则,更新薪水为该范围内的最水值。CREATE OR REPLACE FUNCTION Sal_Level(no emp.empno%TYPE) RETURN CHAR ASvjob emp.job%TYPE;vsal emp.sal%TYPE;vmesg CHAR(50);BEGINSELECT job,sal INTO vjob,vsal FROM emp WHERE empno=no;IF vjob=CLERK THENIF vsal=1500 AND vsal=2501 AND vsal=3501 AND vsal=

11、4501 THENvmesg:=Salary is OK.;ELSEvsal:=4501;vmesg:=Have updated your salary to |TO_CHAR(vsal);END IF;END IF;UPDATE emp SET sal=vsal WHERE empno=no;RETURN vmesg;END;/DECLAREvmesg CHAR(50);vempno emp.empno%TYPE;BEGINvempno:=vmesg:=Sal_Level(vempno);DBMS_OUTPUT.PUT_LINE(vmesg);END;/-SELECT empno,ename

12、,sal,comm,hiredate FROM emp WHERE empno=:no;十二、有如下 MyTable:日期 日产1 3.33332 4.22223 1.55554 9.88885 要求用 SQL 语句生成如下查询日期 日产 累计日产1 3.3333 3.33332 4.2222 7.55553 1.5555 9.00004 9.8888 18.88885select id,quantity,(select sum(quantity)from mytable where id=t.id) as acount from mytable t十三、创建一个序列,第一次从 5 循环到 10,以后再从 0 开始循环create sequence test_seqstart with 5increment by 1maxvalue 10minvalue 0cyclenocache

Copyright © 2018-2021 Wenke99.com All rights reserved

工信部备案号浙ICP备20026746号-2  

公安局备案号:浙公网安备33038302330469号

本站为C2C交文档易平台,即用户上传的文档直接卖给下载用户,本站只是网络服务中间平台,所有原创文档下载所得归上传人所有,若您发现上传作品侵犯了您的权利,请立刻联系网站客服并提供证据,平台将在3个工作日内予以改正。