欢迎来到天天文库
浏览记录
ID:14176760
大小:55.50 KB
页数:22页
时间:2018-07-26
《几十个实用的plsql》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、几十个实用的PLSQLPL/SQL初学者必读:几十个实用的PL/SQL 第一阶段Q.编写一个PL/SQL程序块以显示所给出雇员编号的雇员的详细信息。A.DECLAREerecemp%ROWTYPE;BEGINSELECT*INTOerecfromempWHEREempno=&雇员编号;DBMS_OUTPUT.PUT_LINE('EmpNo'
2、
3、''
4、
5、'Ename'
6、
7、''
8、
9、'Job'
10、
11、''
12、
13、'Manager'
14、
15、''
16、
17、'HireDate'
18、
19、''
20、
21、'Salary'
22、
23、''
24、
25、'Commision'
26、
27、''
28、
29、'DeptNo');DB
30、MS_OUTPUT.PUT_LINE(erec.ename
31、
32、''
33、
34、erec.job
35、
36、''
37、
38、erec.mgr
39、
40、''
41、
42、erec.hiredate
43、
44、''
45、
46、erec.sal
47、
48、''
49、
50、erec.comm
51、
52、''
53、
54、erec.deptno);END;/Q.编写一个PL/SQL程序块以计算某个雇员的年度薪水总额。A.DECLAREesalNUMBER;eenameemp.ename%TYPE;BEGINSELECT(NVL(sal,0)+NVL(comm,0))*12,enameINTOesal,eenamefromempWHEREempno
55、=&雇员编号;DBMS_OUTPUT.PUT_LINE(eename
56、
57、'''sYearsSalaryis'
58、
59、esal);END;/Q.按下列加薪比执行:DeptnoRaise(%age)105%2010%3015%4020%加薪的百分比是以他们现有的薪水为根据的。写一PL/SQL以对指定雇员加薪。A.DECLAREvcounterNUMBER:=10;vraiseNUMBER;BEGINLOOPEXITWHENvcounter>40;UPDATEempsetsal=NVL(sal,0)+NVL(sal,0)*0.05WHEREdeptno=v
60、counter;vcounter:=vcounter+10;ENDLOOP;END;/Q.编写一PL/SQL以向"emp"表添加10个新雇员编号。(提示:如果当前最大的雇员编号为7900,则新雇员编号将为7901到7910)A.DECLAREvcounterNUMBER;BEGINSELECTMAX(empno)INTOvcounterfromemp;FORiIN1..10LOOPvcounter:=vcounter+1;INSERTINTOemp(empno)VALUES(vcounter);ENDLOOP;END;/Q.只使用一个变量来解决实
61、验课作业4。ADECLAREerecemp%ROWTYPE;--vraiseNUMBER;BEGINSELECT*INTOerecfromempWHEREename='&ename';IFerec.job='CLERK'THENUPDATEempSETsal=sal+500WHEREempno=erec.empno;ELSIFerec.job='SALESMAN'THENUPDATEempSETsal=sal+1000WHEREempno=erec.empno;ELSIFerec.job='ANALYST'THENUPDATEempSETsal=
62、sal+1500WHEREempno=erec.empno;ELSEUPDATEempSETsal=sal+2000WHEREempno=erec.empno;ENDIF;--UPDATEempSETsal=sal+vraiseWHEREempno=erec.empno;--DBMS_OUTPUT.PUT_LINE(vraise);END;/Q.接受两个数相除并且显示结果。如果第二个数为0,则显示消息"DIVIDEBYZERO"。A.DECLAREnum1NUMBER;num2NUMBER;BEGINnum1:=#num2:=#D
63、BMS_OUTPUT.PUT_LINE(num1
64、
65、'/'
66、
67、num2
68、
69、'is'
70、
71、num1/num2);EXCEPTIONWHENZERO_DIVIDETHENDBMS_OUTPUT.PUT_LINE('Didn''tyourteachertellyounottoDIVIDEBYZERO?');END;/第二阶段Q.编写一个PL/SQL程序块,对名字以"A"或"S"开始的所有雇员按他们的基本薪水的10%加薪。A.DECLARECURSORc1ISSELECT*fromempWHERESUBSTR(ename,1,1)='A'ORSUBSTR(
72、ename,1,1)='S'FORUPDATEOFsal;BEGINFORiINc1LOOPUPDATEempSETsal=NVL(sa
此文档下载收益归作者所有