PL/SQL初学者必读:几十个实用的PL/SQL

<script type="text/javascript"> </script> <script type="text/javascript" src="http://pagead2.googlesyndication.com/pagead/show_ads.js"> </script>
<script type="text/javascript"> </script><script type="text/javascript" src="http://pagead2.googlesyndication.com/pagead/show_ads.js"> </script>

第一阶段
Q.编写一个 PL/ SQL程序块以显示所给出雇员编号的雇员的详细信息。
A.
 DECLARE
 erecemp%ROWTYPE;
BEGIN
 SELECT*INTOerecFROMemp WHEREempno=&雇员编号;
 DBMS_OUTPUT.PUT_LINE('EmpNo'||''||'Ename'||''||'Job'||''||'Manager'||''||'HireDate'||''||'Salary'||''||'Commision'||''||'DeptNo');
 DBMS_OUTPUT.PUT_LINE(erec.ename||''||erec.job||' '||erec.mgr||' '||erec.hiredate||' '||erec.sal||' '||erec.comm||' '||erec.deptno);
END;
/
Q.编写一个 PL/ SQL程序块以计算某个雇员的年度薪水总额。
A.
DECLARE
 esalNUMBER;
 eenameemp.ename%TYPE;
BEGIN
 SELECT(NVL(sal,0)+NVL(comm,0))*12,enameINTOesal,eenameFROMempWHEREempno=&雇员编号;
 DBMS_OUTPUT.PUT_LINE(eename||'''sYearsSalaryis'||esal);
END;
/
Q.按下列加薪比执行:
 Deptno Raise(%age)
10 5%
20 10%
30 15%
40 20%
加薪的百分比是以他们现有的薪水为根据的。写一 PL/ SQL以对指定雇员加薪。
A.
DECLARE
 vcounterNUMBER:=10;
 vraiseNUMBER;
BEGIN
 LOOP
  EXITWHENvcounter>40;
  UPDATEempsetsal=NVL(sal,0)+NVL(sal,0)*0.05 WHEREdeptno=vcounter;
  vcounter:=vcounter+10;
 ENDLOOP;
END;
/

Q.编写一 PL/ SQL以向"emp"表添加10个新雇员编号。
(提示:如果当前最大的雇员编号为7900,则新雇员编号将为7901到7910)
A.
DECLARE
 vcounterNUMBER;
BEGIN
 SELECTMAX(empno)INTOvcounterFROMemp;
 FORiIN1..10
 LOOP
  vcounter:=vcounter+1;
  INSERTINTOemp(empno)VALUES(vcounter);
 ENDLOOP;
END;
/
Q.只使用一个变量来解决实验课作业4。
A
DECLARE
 erecemp%ROWTYPE;
-- vraiseNUMBER;
BEGIN
 SELECT*INTOerec
 FROMemp
 WHEREename='&ename';
 IFerec.job='CLERK'THEN
  UPDATEempSETsal=sal+500WHEREempno=erec.empno;
 ELSIFerec.job='SALESMAN'THEN
  UPDATEempSETsal=sal+1000WHEREempno=erec.empno;
 ELSIFerec.job='ANALYST'THEN
  UPDATEempSETsal=sal+1500WHEREempno=erec.empno;
 ELSE
  UPDATEempSETsal=sal+2000WHEREempno=erec.empno;
 ENDIF;
-- UPDATEempSETsal=sal+vraiseWHEREempno=erec.empno;
-- DBMS_OUTPUT.PUT_LINE(vraise);
END;
/
Q.接受两个数相除并且显示结果。如果第二个数为0,则显示消息"DIVIDEBYZERO"。
A.
DECLARE
 num1NUMBER;
 num2NUMBER;
BEGIN
 num1:=&num;
 num2:=&num;
 DBMS_OUTPUT.PUT_LINE(num1||'/'||num2||'is'||num1/num2);
EXCEPTION
 WHENZERO_DIVIDETHEN
  DBMS_OUTPUT.PUT_LINE('Didn''tyourteachertellyounottoDIVIDEBYZERO?');
END;
/


第二阶段
Q.编写一个 PL/ SQL程序块,对名字以"A"或"S"开始的所有雇员按他们的基本薪水的10%加薪。
A.
DECLARE
 CURSORc1IS
   SELECT*FROMempWHERESUBSTR(ename,1,1)='A'ORSUBSTR(ename,1,1)='S'FORUPDATEOFsal;

BEGIN
 FORiINc1
 LOOP
  UPDATEempSETsal=NVL(sal,0)+NVL(sal,0)*0.1WHERECURRENTOFc1;
 ENDLOOP;
END;
/
Q.编写一 PL/ SQL,对所有的"销售员"(SALESMAN)增加佣金500.
A.
DECLARE
 CURSORc1IS 1 <script type="text/javascript"> </script> <script type="text/javascript" src="http://pagead2.googlesyndication.com/pagead/show_ads.js"> </script>
<script type="text/javascript"> </script><script type="text/javascript" src="http://pagead2.googlesyndication.com/pagead/show_ads.js"> </script>
1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。 1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。 1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值