-------------------------------------练习
/*
问题1:输入一个雇员的编号,如果其工资高于3500,则显示高工资,工资大于2000,则显示中等工资,
工资小于2000 的则认为是低等工资。
DECLARE
eno emp.empno%TYPE ;
sal emp.sal%TYPE ;
BEGIN
eno := &en ;
SELECT sal INTO sal FROM emp WHERE empno=eno ;
IF sal>3500 THEN
DBMS_OUTPUT.put_line('高工资。。。') ;
ELSIF sal>2000 THEN
DBMS_OUTPUT.put_line('中等工资。。') ;
ELSE
DBMS_OUTPUT.put_line('底工资。。。') ;
END IF ;
END ;
/
*/
DECLARE
eno emp.empno%type;
sa emp.sal%type;
BEGIN
eno:=&员工编号;
SELECT sal INTO sa FROM emp WHERE emp.empno=eno;
IF sa>3500 THEN
DBMS_OUTPUT.put_line('.....高工资');
ELSIF sa>2000 THEN
DBMS_OUTPUT.put_line('.....中工资');
ELSE
DBMS_OUTPUT.put_line('.....低工资');
END IF;
END;
/*
问题2:输入一个雇员编号,根据它所在的部门涨工资,规则:
• 10 部门上涨10%
• 20 部门上涨20%
• 30 部门上涨30%
• 其他部门上涨18%
所有部门的上涨工资,最多不能超过5000,如果超过5000,则工资就为5000。
*/
DECLARE
eno emp.empno%type;
dn emp.deptno%type;
sa emp.sal%type;
BEGIN
eno:=&员工编号;
SELECT emp.deptno INTO dn FROM emp WHERE emp.empno=eno;
UPDATE emp3 SET sal = decode(dn,'10',sal*(1+0.1),'20',sal*(1+0.15),'30',sal*(1+0.2),sal*(1+0.18))
WHERE emp3.empno=eno;
SELECT emp.sal INTO sa FROM emp WHERE emp.empno=eno;
IF sa>5000 THEN
UPDATE emp3 SET sal=5000 WHERE emp3.empno=eno;
END IF;
END;
declare
eno emp3.empno%TYPE;
dno emp3.deptno%TYPE;
esal emp3.sal%TYPE;
begin
eno:=&no;
select deptno,sal into dno,esal from emp3 where empno=eno;
if dno=10 then
esal := esal + esal*0.1;
elsif dno=20 then
esal := esal + esal*0.2;
elsif dno=30 then
esal := esal + esal*0.3;
end if;
if esal>5000 then
esal:=5000;
end if;
update emp3 set sal=esal where empno=eno;
end;
/*
问题3 接受部门编号,显示部门名和地理位置
*/
DECLARE
dno dept.deptno%type;
dna dept.dname%type;
lo dept.loc%type;
BEGIN
dno:=&部门编号:;
SELECT dept.dname,dept.loc INTO dna,lo FROM dept WHERE dept.deptno=dno;
DBMS_OUTPUT.put_line(dno||'部门名称是'||dna||'位于'||lo);
EXCEPTION
WHEN no_data_found THEN
DBMS_OUTPUT.put_line('你输入的部门号可能有误!');
END;
/*
问题4 接受雇员编号,显示该雇员的工资和提成,没有提成的用0代替
为应付检查 没有奖金的统一显示奖金为100 不准用if语句
*/
DECLARE
eno emp3.empno%type;
sa emp3.sal%type;
co emp3.comm%type;
BEGIN
eno:=&请输入雇员编号;
SELECT emp3.sal,nvl(emp3.comm,100) INTO sa,co FROM emp3 WHERE emp3.empno=eno;
DBMS_OUTPUT.put_line('编号为'||eno||'的雇员工资是'||sa||'提成是'||co);
EXCEPTION
WHEN no_data_found THEN
Dbms_Output.put_line('你输入的雇员编号不存在!~');
END;
declare
sno emp.empno%type;
e1 emp%rowtype;
begin
sno:=&no;
select * into e1 from emp where empno=sno;
dbms_output.put_line(e1.empno||' '||e1.ename||' '||e1.job||' '||e1.mgr||' '||e1.hiredate||' '||e1.sal||'
'||nvl(e1.comm,0)||' '||e1.deptno);
exception
when no_data_found then
dbms_output.put_line('not find date');
end;
/*
问题5 用Loop为dept表增加50-90这些部门
*/
DECLARE
no NUMBER;
BEGIN
no:=50;
WHILE (no<=90) LOOP
INSERT INTO dept1(dept_id) values(no);
no:=no+10;
END LOOP;
END;
/*
问题6 接受一个雇员名,显示该雇员的所有内容,当没有该雇员的时候用异常显示
*/
DECLARE
ena emp.ename%type;
e1 emp%rowtype;
BEGIN
ena:=&雇员名;
SELECT * INTO e1 FROM emp where emp.ename = ena;
dbms_output.put_line(e1.empno||' '||e1.ename||' '||e1.job||' '||e1.mgr||' '||e1.hiredate||' '||e1.sal||'
'||nvl(e1.comm,0)||' '||e1.deptno);
EXCEPTION
WHEN no_data_found THEN
DBMS_OUTPUT.put_line('该雇员名有误!');
END;
/*
问题7 接受两个数相除,并显示结果,如果除数为0,则显示错误提示
*/
DECLARE
a NUMBER;
b NUMBER;
BEGIN
a:=&a;
b:=&b;
DBMS_OUTPUT.put_line(a||'/'||b||'='||a/b);
EXCEPTION
WHEN zero_divide THEN
DBMS_OUTPUT.put_line('被除数不能为0!');
END;
分享到:
相关推荐
本章节主要介绍了 PL/SQL 程序设计的基础知识,包括 PL/SQL 的优点、运行 PL/SQL 程序、PL/SQL 块结构、PL/SQL 基本语法、PL/SQL 处理流程、异常处理、游标、存储过程和函数、触发器等。 PL/SQL 的优点包括: * ...
PL/SQL,全称为Procedural Language/Structured Query Language,是Oracle数据库提供的一种过程化编程语言,它将SQL的查询能力与过程性编程语言的控制结构相结合,使得数据库管理和应用开发更为高效。 本书内容可能...
PL/SQL是Oracle数据库中的一个核心组件,全称为Procedural Language/Structured Query Language,即过程化结构化查询语言。它是SQL的扩展,允许开发者在SQL的基础上添加过程化编程元素,如循环、条件判断和子程序等...
### Oracle PL/SQL测试题目与知识点解析 #### 一、选择题知识点解析 **1. Oracle数据库中为新创建的表分配的初始空间通常为多大?** - **知识点解析:** Oracle数据库为新创建的表分配的空间单位是“区”(Extent...
Oracle 11g SQL和PL SQL从入门到精通 pdf格式电子书 下载(一) http://download.csdn.net/source/3268267 Oracle 11g SQL和PL SQL从入门到精通 pdf格式电子书 下载(二) ...
PL/SQL 的函数与存储过程练习 PL/SQL 的函数与存储过程练习
第一部分 sql和pl/sql相关工具 第1章 在windows 平台上安装oracle database 11g 第2章 配置网络服务名 第3章 使用sql database 第4章 使用sql*plus 第二部分 sql 第5章 sql和pl/sql综述 第6章 简单查询 ...
Oracle9i PL/SQL是Oracle数据库系统中的一种过程化编程语言,它结合了SQL的查询功能和传统的编程语言特性,使得数据库操作更为高效和灵活。本资料“Introduction To ORACLE9i PL/SQL”提供了全英文的学习资源,适合...
Oracle PL/SQL程序设计是数据库开发领域中一本权威的指南,尤其对于使用Oracle数据库进行存储过程、函数和其他数据库编程的开发者来说,具有极高的参考价值。第5版的书籍不仅涵盖了PL/SQL的基础知识,还深入探讨了...
这篇博客“Oracle PL/SQL的练习题”可能包含一系列针对初学者和进阶者的编程挑战,旨在提升对PL/SQL语言的理解和应用能力。虽然没有具体的描述,但我们可以推测这些练习可能涵盖以下几个方面: 1. **变量声明与赋值...
PL/SQL,全称Procedural Language/Structured Query Language,是Oracle数据库提供的一个编程环境,主要用于管理和操作Oracle数据库。它是SQL的扩展,增加了程序设计语言的特性,使得开发者能够编写复杂的存储过程、...
Oracle PL/SQL是一种强大的编程语言,它结合了SQL的数据处理能力与Procedural Language的控制结构,被广泛用于Oracle数据库的开发和管理。本资料集是"Oracle PL/SQL实例精解",提供了丰富的源代码示例,帮助读者深入...
Oracle数据库是目前世界上使用最广泛的数据库之一,而PL/SQL是Oracle公司提供的过程化SQL语言,它是对SQL标准的扩展,使得数据库开发人员可以编写出更为复杂的程序代码。在Oracle10g版本中,PL/SQL语言得到了进一步...
Oracle PL/SQL是一种强大的数据库编程语言,用于在Oracle数据库中执行复杂的业务逻辑和数据操作。在"Oracle PL/SQL实例精讲--使用表,课后答案"中,读者可以深入理解如何有效地使用PL/SQL与Oracle数据库中的表格进行...
以下是PL/SQL考试题目分享的知识点总结: 1. PL/SQL循环语句:在PL/SQL中,LOOP语句用于实现循环操作,例如,使用FOR循环语句可以实现循环一定次数的操作。在题目1中,使用FOR循环语句来显示2到50的25个偶数。 ...
Oracle 10g WDP-PL/SQL 官方培训PPT是...这些PPT文档提供的练习题将帮助你巩固理论知识,并将其转化为实践技能。通过深入学习和实践,你将成为一名熟练的Oracle PL/SQL开发者,能够解决复杂的数据管理和业务逻辑问题。
第一部分SQL和PL/SQL相关工具 第1章在Windows平台上安装OracleDatabase11g 第2章配置网络服务名 第3章使用SQLDatabase 第4章使用SQL*Plus 第二部分SQL 第5章SQL和PL/SQL综述 第6章简单查询 第7章SQL...
课件可能包含详细的讲解、示例代码、练习题和解答,旨在提供一个全面的学习环境,帮助学员熟练掌握Oracle PL/SQL编程。无论你是数据库管理员、开发人员还是系统分析师,这个课件都将为你的职业生涯添加重要的技能。
这些资料会提供实例演示、练习题和解决方案,帮助开发者逐步建立起实际操作的能力,从而在数据库开发领域中提升专业技能。对于那些希望在Oracle数据库环境中进行高效编程的人来说,这是一个不可多得的学习资源。