`
nannan408
  • 浏览: 1783231 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

oracle我以前的资料(一些基本存储过程)

阅读更多
1.假设有两个表,职员表emp(工号eno,姓名ename,工资esal)和津贴表comm(工号eno,津贴ecomm)
要求用游标完成操作:取出职员表中工资大于1000元的记录,将其工资的30%作为津贴插入
津贴表中.

declare
      --定义游标;
      cursor c is select eno,esal*0.3 from emp where esal>1000;
      vno number;  
      vsal number;
begin
      open c;
      fetch c into vno,vsal;
      while c%found
           loop            
              insert into comm values(vno,vsal);
              fetch c into vno,vsal;
           end loop;
      close c;
end;

2.职员表emp(工号eno,姓名ename,工资esal),用pl/sql匿名块实现输入三个员工的姓名,输出此
3人的平均工资,若平均工资低于800,则所有员工加10%工资,保证此3人平均工资不低于800

declare
  vname1 varchar2(20);
  vname2 varchar2(20);
  vname3 varchar2(20);
  vsal number;
begin
  vname1:='&第1个员工姓名';
  vname2:='&第2个员工姓名';
  vname3:='&第3个员工姓名';

  select avg(esal) into vsal from emp where ename=vname1 or ename=vname2 or ename=vname3;
 
  dbms_output.put_line('此3人平均工资是'||vsal);

  while vsal<800
  loop
     update emp set esal=esal*1.1;
     select avg(esal) into vsal from emp where ename=vname1 or ename=vname2 or ename=vname3;
  end loop;

end;

3.职员表emp(工号eno,姓名ename,出生日期birthday),创建一个函数,实现根据员工编号判断
某员工是否是童工(年龄<18岁)

create or replace function isTonggong(vno varchar2) return boolean
as
  vage number;
begin
  select sysdate-birthday into vage from emp where eno=vno;
  if vage<18 then
    return true;
  else
    return false;
  end if;
end isTonggong;

4.假设有两个表,职员表emp(工号eno,姓名ename,工资esal)和津贴表comm(工号eno,津贴ecomm),要求
在删除职员表中记录时,自动实现津贴表中对应记录的删除

create or replace trigger delemp
after delete on emp
for each row
begin
  delete from comm where eno=:old.eno;
end;

5.职员表emp(工号eno,姓名ename,出生日期birthday),
工号 varchar2(10) 主键 由入职年份和编号构成,如'2003000001'
姓名 varchar2(20)
出生日期 date
创建一个存储过程,实现插入一个新员工

create sequence empseq
start with 1
increment by 1
maxvalue 999999
cycle
cache 20;

create or replace procedure
addemp(vno out varchar2,vname varchar2,vbirth date,result out number)
as
begin
  insert into emp
  values(extract(year from sysdate)||lpad(empseq.nextval,6,0),vname,vbirth);
  select eno into vno from emp where ename=vname;
  result:=1;
exception
  when others then
    result:=0;
end addemp;

6.创建包,里面放入第3题的函数和第5题的存储过程,再添加一个存储过程,完成按员工姓名模糊
查询员工信息
type mycur is ref cursor;

create or replace procedure
selemp(vname varchar2,vcur out mycur,result out number)
as
  vcount int;
begin
  select count(*) into vcount from emp where ename like '%'||vname||'%';
  if vcount>0 then
    open vcur for select * from emp where ename like '%'||vname||'%';
    result:=1;
  else
    result:=0;
  end if;
exception
  when others then
    result:=0;
end selemp;

7.创建java项目或web项目,实现对6题包中的存储过程的调用




分享到:
评论

相关推荐

    Oracle自整理学习资料

    Oracle自整理学习资料是针对数据库管理系统Oracle的一套全面学习资源,涵盖了从基础概念到高级特性的深入理解。Oracle是全球广泛使用的大型企业级关系型数据库系统,尤其在金融、电信等行业有着重要应用。本资料旨在...

    Oracle基础学习资料

    学习基本的SQL语法,如SELECT、INSERT、UPDATE、DELETE语句,以及如何创建表、视图、索引、触发器和存储过程,是Oracle基础学习的重要部分。此外,PL/SQL是Oracle特有的过程编程语言,用于编写存储过程、函数和...

    oracle四大宝典之2:Oracle基本管理

    本资料"Oracle四大宝典之2:Oracle基本管理"将深入探讨Oracle数据库的基础知识,帮助你理解和实践数据库的日常维护。 首先,Oracle的安装与配置是基础管理的第一步。这包括选择合适的安装选项(如企业版或标准版)...

    oracle简易客户端.

    对于开发人员,理解PL/SQL编程语言也是必要的,它允许你在Oracle数据库中创建存储过程、函数和触发器。此外,理解Oracle的安全机制,如用户权限管理、角色和权限分配,也是使用Oracle客户端时必须掌握的知识。 总的...

    Oracle知识库(教程)

    Oracle知识库是一个全面涵盖Oracle数据库管理系统相关知识的资源集合,主要针对希望学习和掌握Oracle技术的用户。...无论你是要备考Oracle认证,还是在工作中需要提升Oracle技能,这个资源都将是一份宝贵的资料。

    oracle 10g手册

    4. **PL/SQL编程**:Oracle的扩展SQL语言,允许编写存储过程、函数、触发器等,增强了数据库的处理能力。手册会详细介绍PL/SQL的语法、变量、流程控制结构以及异常处理。 5. **数据库对象管理**:讲解如何创建、...

    Oracle导入导出工具

    Oracle导入导出工具,通常指的是Oracle Data Pump(以前称为EXPDP和IMPDP),它是Oracle 10g及更高版本中引入的一个高级数据传输机制。与传统的EXP和IMP相比,Data Pump提供了更快的速度、更大的灵活性和更丰富的...

    oracle培训材料.ppt

    PL/SQL 语言是 Oracle 的一种过程语言,用于编写存储过程和函数。 七、Oracle9i 数据库管理 Oracle9i 数据库管理包括数据库的建立、基本维护、性能优化、安全管理等。 八、结论 本文档提供了 Oracle 训练 ...

    oracle init.ora 文件据在位置

    在Oracle数据库管理与维护过程中,正确理解并掌握`init.ora`文件的位置至关重要。该文件是Oracle实例启动时读取的重要配置文件之一,用于设置数据库运行所需的参数。本文将详细介绍如何定位`init.ora`文件的具体位置...

    Oracle9I入门基础

    首先,我们要了解Oracle数据库的基本概念。Oracle数据库是一种关系型数据库管理系统(RDBMS),它以表格的形式存储数据,并通过SQL(结构化查询语言)进行数据的查询、更新和管理。Oracle9i引入了增强的SQL功能,...

    oracle自动一年建立表分区.zip

    4. **调度任务**:使用Oracle的DBMS_SCHEDULER或者以前的DBMS_JOB来定期运行这个脚本,确保每年或每月自动创建新分区。 5. **测试与验证**:确保脚本正确运行,新插入的数据自动进入正确的分区。 为了充分利用分区...

    oracle数据库导出

    1. **Oracle Data Pump**:Oracle Data Pump是Oracle 10g引入的新特性,替代了以前的EXP和IMP工具,提供更高的速度和灵活性。它由两个主要组件组成:`expdp`(导出)和`impdp`(导入)。 2. **expdp命令**:`expdp`...

    oracle9i实用教案

    2. **PL/SQL**:PL/SQL是Oracle特有的过程式语言,用于编写存储过程、函数、触发器等。了解其基本语法和控制结构,如IF-THEN-ELSE、FOR循环、异常处理,以及如何在PL/SQL中调用SQL语句是基础。 3. **数据库概念**:...

    Oracle常用傻瓜问题1000问(最全)

    - **作用**: 在早期的Oracle版本中,如Oracle 8i及以前,`svrmgrl`是一个常用的命令行工具,用于启动和停止数据库实例,以及执行其他管理任务。 - **更新**: 在Oracle 9i之后,`svrmgrl`已经被废弃,取而代之的是...

    Oracle SQL高级编程(资深Oracle专家力作,OakTable团队推荐)--随书源代码

    该资料是《Oracle SQL高级编程》的源代码 对应的书籍资料见: Oracle SQL高级编程(资深Oracle专家力作,OakTable团队推荐) 基本信息 原书名: Pro Oracle SQL 原出版社: Apress 作者: (美)Karen Morton Kerry ...

    Oracle_Database_11g完全参考手册.part3/3

    13.2.1 Oracle9i以前版本中的外部连接的语法 13.2.2 现在的外部连接语法 13.2.3 用外部连接代替NOTIN 13.2.4 用NOTEXISTS代替NOTIN 13.3 自然连接和内部连接 13.4 UNION、INTERSECT和MINUS 13.4.1 IN子查询 13.4.2 ...

    oracle培训课件

    在Oracle 9i中,学习PL/SQL可以创建存储过程、函数、触发器和游标,以实现更复杂的数据管理和业务逻辑。 4. 数据库管理 学习如何创建和管理数据库对象,如表、索引、视图和存储过程,以及如何进行权限和角色管理。...

    Oracle_Database_11g完全参考手册.part2/3

    13.2.1 Oracle9i以前版本中的外部连接的语法 13.2.2 现在的外部连接语法 13.2.3 用外部连接代替NOTIN 13.2.4 用NOTEXISTS代替NOTIN 13.3 自然连接和内部连接 13.4 UNION、INTERSECT和MINUS 13.4.1 IN子查询 13.4.2 ...

    Oracle8i_9i数据库基础

    在Oracle中,数据库由表、索引、视图、存储过程等组成,这些元素共同构成了数据存储和检索的框架。学习Oracle,你需要熟悉SQL的语法,包括DML(数据操纵语言)如INSERT、UPDATE、DELETE,以及DDL(数据定义语言)如...

    oracle9i教学.rar

    Oracle 9i教学资料可能是为了帮助用户理解和掌握这个系统的操作、管理和优化。 Oracle 9i的主要知识点包括: 1. **数据库安装与配置**:学习如何在不同的操作系统平台上安装Oracle 9i,包括Windows、Linux和Unix等...

Global site tag (gtag.js) - Google Analytics