`
Phile.net
  • 浏览: 26955 次
  • 性别: Icon_minigender_1
  • 来自: 武汉
社区版块
存档分类
最新评论

PL/SQL 经典总结(一)习题

SQL 
阅读更多
-------------------------------------练习
/*

问题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;
   
 
分享到:
评论

相关推荐

    Oracle数据库实用教程第三章 PL/SQL程序设计.pptx

    本章节主要介绍了 PL/SQL 程序设计的基础知识,包括 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例题代码pl/sql例题代码pl/sql例题代码

    PL/SQL是Oracle数据库中的一个核心组件,全称为Procedural Language/Structured Query Language,即过程化结构化查询语言。它是SQL的扩展,允许开发者在SQL的基础上添加过程化编程元素,如循环、条件判断和子程序等...

    oracle PL/SQL测试题目和详细答案

    ### Oracle PL/SQL测试题目与知识点解析 #### 一、选择题知识点解析 **1. Oracle数据库中为新创建的表分配的初始空间通常为多大?** - **知识点解析:** Oracle数据库为新创建的表分配的空间单位是“区”(Extent...

    Oracle 11g SQL和PL SQL从入门到精通 pdf格式电子书 下载(一)

    Oracle 11g SQL和PL SQL从入门到精通 pdf格式电子书 下载(一) http://download.csdn.net/source/3268267 Oracle 11g SQL和PL SQL从入门到精通 pdf格式电子书 下载(二) ...

    PL/SQL 的函数与存储过程练习

    PL/SQL 的函数与存储过程练习 PL/SQL 的函数与存储过程练习

    Oracle 11g SQL和PL SQL从入门到精通 pdf格式电子书 下载(二)

    第一部分 sql和pl/sql相关工具  第1章 在windows 平台上安装oracle database 11g  第2章 配置网络服务名  第3章 使用sql database  第4章 使用sql*plus 第二部分 sql  第5章 sql和pl/sql综述  第6章 简单查询 ...

    Introduction To ORACLE9i PL/SQL(所有讲解及习题)

    Oracle9i PL/SQL是Oracle数据库系统中的一种过程化编程语言,它结合了SQL的查询功能和传统的编程语言特性,使得数据库操作更为高效和灵活。本资料“Introduction To ORACLE9i PL/SQL”提供了全英文的学习资源,适合...

    Oracle PL/SQL程序设计(第5版)源代码

    Oracle PL/SQL程序设计是数据库开发领域中一本权威的指南,尤其对于使用Oracle数据库进行存储过程、函数和其他数据库编程的开发者来说,具有极高的参考价值。第5版的书籍不仅涵盖了PL/SQL的基础知识,还深入探讨了...

    Oracle PL/SQL的练习题

    这篇博客“Oracle PL/SQL的练习题”可能包含一系列针对初学者和进阶者的编程挑战,旨在提升对PL/SQL语言的理解和应用能力。虽然没有具体的描述,但我们可以推测这些练习可能涵盖以下几个方面: 1. **变量声明与赋值...

    pl/sql 练习题.

    PL/SQL,全称Procedural Language/Structured Query Language,是Oracle数据库提供的一个编程环境,主要用于管理和操作Oracle数据库。它是SQL的扩展,增加了程序设计语言的特性,使得开发者能够编写复杂的存储过程、...

    oracle pl sql 实例精解 源代码

    Oracle PL/SQL是一种强大的编程语言,它结合了SQL的数据处理能力与Procedural Language的控制结构,被广泛用于Oracle数据库的开发和管理。本资料集是"Oracle PL/SQL实例精解",提供了丰富的源代码示例,帮助读者深入...

    精通oracle10g PL/SQL编程

    Oracle数据库是目前世界上使用最广泛的数据库之一,而PL/SQL是Oracle公司提供的过程化SQL语言,它是对SQL标准的扩展,使得数据库开发人员可以编写出更为复杂的程序代码。在Oracle10g版本中,PL/SQL语言得到了进一步...

    Oracle PL/SQL实例精讲--使用表,课后答案

    Oracle PL/SQL是一种强大的数据库编程语言,用于在Oracle数据库中执行复杂的业务逻辑和数据操作。在"Oracle PL/SQL实例精讲--使用表,课后答案"中,读者可以深入理解如何有效地使用PL/SQL与Oracle数据库中的表格进行...

    PLSQL考试题目分享.pdf

    以下是PL/SQL考试题目分享的知识点总结: 1. PL/SQL循环语句:在PL/SQL中,LOOP语句用于实现循环操作,例如,使用FOR循环语句可以实现循环一定次数的操作。在题目1中,使用FOR循环语句来显示2到50的25个偶数。 ...

    oracle 10g WDP-PL/SQL 官方培训 PPT

    Oracle 10g WDP-PL/SQL 官方培训PPT是...这些PPT文档提供的练习题将帮助你巩固理论知识,并将其转化为实践技能。通过深入学习和实践,你将成为一名熟练的Oracle PL/SQL开发者,能够解决复杂的数据管理和业务逻辑问题。

    Oracle 11g SQL和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 PL/SQL编程。无论你是数据库管理员、开发人员还是系统分析师,这个课件都将为你的职业生涯添加重要的技能。

    oracle 大学PL/SQL 编程培训资料

    这些资料会提供实例演示、练习题和解决方案,帮助开发者逐步建立起实际操作的能力,从而在数据库开发领域中提升专业技能。对于那些希望在Oracle数据库环境中进行高效编程的人来说,这是一个不可多得的学习资源。

Global site tag (gtag.js) - Google Analytics