`
nannan408
  • 浏览: 1755358 次
  • 性别: 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 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_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 ...

    oracle恢复工具-FY_Recover_Data

    方法:用存储过程包Fy_Recover_Data ? ? 它是利用Oracle表扫描机制、数据嫁接机制恢复TRUNCATE或者损坏数据的工具包,这个包是由行内有影响力的DBA大师黄炜先生通过PLSQL编写的,再这里再次感谢他的无私技术分享。...

    Toad 使用快速入门

    Toad 使用快速入门 目录 一.Toad功能综述 二....三....四....1. Schema browser的用法简介 2. SQL Editor的使用介绍 3. Procedure Editor的...  要用Toad对存储过程进行debug,必须安装Oracle的系统包:dbms_debug...

    健康档案管理系统.RAR

    3. 开发工具和环境不限(可以是Visual C++.Net、Visual C#.Net、Java等),开发出的系统的形式不限(可以是Win界面,也可以是Web界面),使用的数据库不限(可以是SQL Server或Oracle)。 4. 设计报告正文字数不少于...

    基于J2EE框架的个人博客系统项目毕业设计论文(源码和论文)

    在数据库处理方面,不需要在数据层借助存储过程及数据库服务器端函数封装过多的业务逻辑,因此数据库系统采用相对精巧的MySQL[6]。 该在线博客系统服务器端如果需要布置到其他主机上,则该主机必备条件如下: 1. ...

    基于J2EE框架的个人博客系统项目毕业设计论...

    在数据库处理方面,不需要在数据层借助存储过程及数据库服务器端函数封装过多的业务逻辑,因此数据库系统采用相对精巧的MySQL[6]。 该在线博客系统服务器端如果需要布置到其他主机上,则该主机必备条件如下: 1. ...

    网管教程 从入门到精通软件篇.txt

    Windows XP(包括 Windows 2000)的控制台命令是在系统出现一些意外情况下的一种非常有效的诊断和测试以及恢复系统功能的工具。小编的确一直都想把这方面的命令做个总结,这次辛苦老范给我们整理了这份实用的秘笈。 ...

    测试培训教材

    QC支持的数据库:Oracle、SQLServer QC支持的操作系统:Windows、Linux、Solaris 支持群集: 服务器端硬件和数据库要求: Windows: Linux: Solaris: 客户端系统要求: 练习1:安装QC 详见...

    springmybatis

    MyBatis是支持普通SQL查询,存储过程和高级映射的优秀持久层框架。MyBatis消除了几乎所有的JDBC代码和参数的手工设置以及结果集的检索。MyBatis使用简单的XML或注解用于配置和原始映射,将接口和Java的POJOs(Plan ...

Global site tag (gtag.js) - Google Analytics