电脑桌面
添加小米粒文库到电脑桌面
安装后可以在桌面快捷访问

PLSQL练习1VIP免费

PLSQL练习1_第1页
1/8
PLSQL练习1_第2页
2/8
PLSQL练习1_第3页
3/8
OraclePL/SQL面试题文章分类:数据库一、求1-100之间的素数setserveroutputondeclareflagboolean:=true;beginforiin1..100loopforjin2..i-1loopifmod(i,j)=0thenflag:=false;endif;endloop;ifflagthendbms_output.put_line(i);endif;flag:=true;endloop;end;二、对所有员工,如果该员工职位是MANAGER,并且在DALLAS工作那么就给他薪金加15%;如果该员工职位是CLERK,并且在NEWYORK工作那么就给他薪金扣除5%;其他情况不作处理对所有员工,如果该员工部门是SALES,并且工资少于1500那么就给他薪金加15%;如果该员工部门是RESEARCH,并且职位是CLERK那么就给他薪金增加5%;其他情况不作处理declarecursorc1isselectempno,sal,dname,jobfromempe,deptdwheree.deptno=d.deptno;c1recc1%rowtype;beginforc1recinc1loopifc1rec.dname='SALES'andc1rec.sal<1500thenupdateempsetsal=sal*1.15whereempno=c1rec.empno;elsifc1rec.dname='RESEARCH'andc1rec.job='CLERK'thenupdateempsetsal=sal*1.05whereempno=c1rec.empno;elsenull;endif;endloop;end;declarecursorc1isselect*fromemp;c1recc1%rowtype;v_locvarchar2(20);beginforc1recinc1loopselectlocintov_locfromdeptwheredeptno=c1rec.deptno;ifc1rec.job='MANAGER'andv_loc='DALLAS'thenupdateempsetsal=sal*1.15whereempno=c1rec.empno;elsifc1rec.job='CLERK'andv_loc='NEWYORK'thenupdateempsetsal=sal*0.95whereempno=c1rec.empno;elsenull;endif;endloop;end;三、对直接上级是'BLAKE'的所有员工,按照参加工作的时间加薪:81年6月以前的加薪10%81年6月以后的加薪5%declarecursorc1isselect*fromempwheremgr=(selectempnofromempwhereename='BLAKE');--直接上级是'BLAKE'的所有员工c1recc1%rowtype;beginforc1recinc1loopifc1rec.hiredate<'01-6月-81'thenupdateempsetsal=sal*1.1whereempno=c1rec.empno;elseupdateempsetsal=sal*1.05whereempno=c1rec.empno;endif;endloop;end;三、根据员工在各自部门中的工资高低排出在部门中的名次(允许并列).<1>一条SQL语句selectdeptno,ename,sal,(selectcount(*)+1fromempwheredeptno=a.deptnoandsal>a.sal)asordfromempaorderbydeptno,saldesc;<2>PL/SQL块declarecursorccisselect*fromdept;ccreccc%rowtype;cursorck(nonumber)isselect*fromempwheredeptno=noorderbysaldesc;ckrecck%rowtype;inumber;jnumber;v_salnumber:=-1;beginforccrecinccloopi:=0;forckrecinck(ccrec.deptno)loopi:=i+1;--写入临时表ifckrec.sal=v_salthennull;elsej:=i;endif;--显示DBMS_OUTPUT.put_line(ccrec.deptno||chr(9)||ckrec.ename||chr(9)||ckrec.sal||chr(9)||j);v_sal:=ckrec.sal;endloop;endloop;end;四、编写一个触发器实现如下功能:对修改职工薪金的操作进行合法性检查:a)修改后的薪金要大于修改前的薪金b)工资增量不能超过原工资的10%c)目前没有单位的职工不能涨工资createorreplacetriggertr1afterupdateofsalonempforeachrowbeginif:new.sal<=:old.salthenraise_application_error(-20001,'修改后的薪金要大于修改前的薪金');elsif:new.sal>:old.sal*1.1thenraise_application_error(-20002,'工资增量不能超过原工资的10%');elsif:old.deptnoisnullthenraise_application_error(-20003,'没有单位的职工不能涨工资');endif;end;四、编写一个PL/SQL程序块,对名字以"A"或"S"开始的所有雇员按他们的基本薪水的10%加薪。DECLARECURSORc1ISSELECT*FROMempWHERESUBSTR(ename,1,1)=´A´ORSUBSTR(ename,1,1)=´S´FORUPDATEOFsal;BEGINFORiINc1LOOPUPDATEempSETsal=NVL(sal,0)+NVL(sal,0)*0.1WHERECURRENTOFc1;ENDLOOP;END;/五、编写一PL/SQL,对所有的"销售员"(SALESMAN)增加佣金500.DECLARECURSORc1ISSELECT*FROMempWHEREjob=´SALESMAN´FORUPDATEOFsal;BEGINFORiINc1LOOPUPDATEempSETsal=NVL(sal,0)+500WHERECURRENTOFc1;ENDLOOP;END;/六、编写一PL/SQL,以提升两个资格最老的"职员"为"高级职员"。(工作时间越长,优先级越高)DECLARECURSORc1ISSELECT*FROMempWHEREjob=´CLERK´ORDERBYhi...

1、当您付费下载文档后,您只拥有了使用权限,并不意味着购买了版权,文档只能用于自身使用,不得用于其他商业用途(如 [转卖]进行直接盈利或[编辑后售卖]进行间接盈利)。
2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。
3、如文档内容存在违规,或者侵犯商业秘密、侵犯著作权等,请点击“违规举报”。

碎片内容

确认删除?
VIP
微信客服
  • 扫码咨询
会员Q群
  • 会员专属群点击这里加入QQ群
客服邮箱
回到顶部