Oracle经典练习题(很全面)讲解学习

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

O r a c l e经典练习题

(很全面)

Oracle 经典练习题

一.创建一个简单的PL/SQL程序块

1.编写一个程序块,从emp表中显示名为“SMITH”的雇员的薪水和职位。

declare

v_emp emp%rowtype;

begin

select * into v_emp from emp where ename='SMITH';

dbms_output.put_line('员工的工作是:'||v_emp.job||' ;他的薪水是:

'||v_emp.sal);

end;

2.编写一个程序块,接受用户输入一个部门号,从dept表中显示该部门的名称与所在位置。

方法一:(传统方法)

declare

pname dept.dname%type;

ploc dept.loc%type;

pdeptno dept.deptno%type;

begin

pdeptno:=&请输入部门编号;

select dname,loc into pname,ploc from dept where

deptno=pdeptno;

dbms_output.put_line('部门名称: '||pname||'所在位

置:'||ploc);

exception –异常处理

when no_data_found

then dbms_output.put_line('你输入的部门编号有误!!');

when others

then dbms_output.put_line('其他异常');

end;

方法二:(使用%rowtype)

declare

erow dept%rowtype;

begin

select * into erow from dept where deptno=&请输入部门编号;

dbms_output.put_line(erow.dname||'--'||erow.loc); exception

when no_data_found

then dbms_output.put_line('你输入的部门号有误!!!');

when others

then dbms_output.put_line('其他异常');

end;

3.编写一个程序块,利用%type属性,接受一个雇员号,从emp表中显示该雇

员的整体薪水(即,薪水加佣金)。

declare

pempno emp.empno%type;

totalSal emp.sal%type;

begin

pempno:=&请输入员工编号;

select sal+nvl(comm,0) into totalSal from emp where

empno=pempno;

dbms_output.put_line('该员工总共薪水'||totalSal);

exception

when no_data_found

then dbms_output.put_line('你输入的员工编号有误!!');

when others

then dbms_output.put_line('其他异常');

end;

4.编写一个程序块,利用%rowtype属性,接受一个雇员号,从emp表中显示

该雇员的整体薪水(即,薪水加佣金)。

declare

erow emp%rowtype;

begin

select * into erow from emp where empno=&请输入员工编号;

dbms_output.put_line(erow.sal+nvl(m,0)); exception

when no_data_found

then dbms_output.put_line('你输入的员工编号有误!!');

when others

then dbms_output.put_line('其他异常');

end;

5.某公司要根据雇员的职位来加薪,公司决定按下列加薪结构处理:

Designation Raise

-----------------------

Clerk 500

Salesman 1000

Analyst 1500

Otherwise 2000

编写一个程序块,接受一个雇员名,从emp表中实现上述加薪处理。

declare

erow emp%rowtype;

begin

select * into erow from emp where ename='&name';

if erow.job='Clerk'then

update emp set sal=sal+500where empno=erow.empno;

elsif erow.job='Salesman'then

update emp set sal=sal+1000where empno=erow.empno;

elsif erow.job='Analyst'then

update emp set sal=sal-1500where empno=erow.empno;

else

update emp set sal=sal+2000where empno=erow.empno;

end if;

commit;

exception

when no_data_found

then dbms_output.put_line('你输入的员工编号有误!!'); when others

then dbms_output.put_line('其他异常');

end;

6.编写一个程序块,将emp表中雇员名全部显示出来。

相关文档
最新文档