`
Appleses
  • 浏览: 348597 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

Oracle索引、视图、存储过程、触发器、序列、函数和包

 
阅读更多

索引

  目地:更快地检索数据。

  特点:读取数据速度快,但添加数据速度慢.。

  语法:

  create index idx_stu_email on stu (email) ;

  drop index idx_stu_email ;

  select index_name from user_indexs ;

========================================================

视图

  特点:视图相当于子查询。

  语法:

  create view v$;

  select view_name from user_views ;

  desc v$_dept_avg_sal_info ;

  create view v$_stu as select id,name from stu ;

=========================================================

存储过程

  语法:

  1.创建不带参数的存储过程

  create or replace procedure p

  as

  cursor c is

  select * from emp for update;

  begin

  for v_emp in c loop

  if(v_emp.deptno = 10) then

  update emp set sal = sal +10 where current of c;

  elsif (v_emp.deptno = 20) then

  update emp set sal = sal + 20 where current of c;

  else

  update emp set sal = sal + 50 where current of c;

  end if ;

  end loop ;

  commit ;

  end ;

  // 执行存储过程(两种方式)

  · exec p;

 

  · begin

  p;

  end;

 

  2.创建带参数的存储过程

  create or replace procedure p

  (v_a in number,v_b number,v_ret out number)

  is

  begin

  if(v_a > v_b) then

  v_ret:=v_a ;

  else

  v_ret :=v_b ;

  end if ;

  end ;

  // 执行带参数的存储过程

  declare

  v_a number:=3 ;

  v_b number:=4 ;

  v_ret number ;

 

  begin

  p(v_a,v_b,v_ret) ;

  dbms_output.put_line(v_ret) ;

  end ;

===============================================================

触发器

  利用触发器实现的业务如下:

  现有两个表:emp和operate_info表,当用户对emp表进行增删改操作时,触发你所创建的触发器,该触发器执行向operate_info表中插入一条信息,记录用户对emp表的操作。

  语法:

  创建emp表:

  create table emp

  (

  uname varchar2(20),

  action varchar2(10),

  atime date

  )

 

  // 创建触发器

  create or replace trigger trig

  after insert or delete or update on emp for each row

  begin

  if inserting then

  insert into emp_log values (USER,'insert',sysdate) ;

  elsif updating then

  insert into emp_log values (USER,'upate',sysdate) ;

  elsif deleting then

  insert into emp_log values (USER,'dalete',sysdate) ;

  end if;

  end ;

 

  // 删除触发器

  drop trigger trig ;

===========================================================

 序列(Sequence):

        Sequence是数据库系统按照一定规则自动增加的数字序列。这个序列一般作为代理主键(因为不会重  复),没有其他任何意义。
        Sequence是数据库系统的特性,有的数据库实现了Sequence,有的则没有。比如Oracle、DB2、PostgreSQL数据库实现Sequence,MySQL、SQL Server、Sybase等数据库没有Sequence。

      Sequence 语法:
       定义一个seq_test,最小值为10000,最大值为99999999999999999,从20000开始,增量的步长为1,缓存为20的循环排序Sequence。
Oracle的定义方法:
create sequence seq_test
minvalue 10000
maxvalue 99999999999999999
start with 20000
increment by 1
cache 20
cycle
order;
=====================================================================

 函数

      函数用于返回特定的数据,当建立函数时,在函数头部必须包含 return 子句。
      而在函数体内必须包含 return 语句返回的数据。我们可以使用 create function
     来建立函数,实际案例:  
Sql 代码    

   1.  --输入雇员的姓名,返回该雇员的年薪    
   2.  create function annual_incomec(name varchar2)    
   3.  return number is   
   4.  annual_salazy number(7,2);    
   5.  begin   
   6.      --执行部分    
   7.      select sal*12+nvl(comm, 0) into annual_salazy from emp where ename=name;    
   8.      return annual_salazy;    
   9.  end;     
 10.  /   

     如果函数创建过程有编译错误,可以使用show error;命令显示错误  
     在 sqlplus 中调用函数  
Sql 代码    

   1.  SQL> var income number    
   2.  SQL> call annual_incomec('scott') into: income;    
   3.  SQL> print income   

 ======================================================================
 包 

     包用于在逻辑上组合过程和函数,它由包规范和包体两部分组成。  
     1、我们可以使用 create package 命令来创建包。  
     实例:  
      --创建一个包 sp_package  
      --声明该包有一个过程 update_sal  
      --声明该包有一个函数annual_income  
Sql 代码    

   1.  create package sp_package is   
   2.    procedure update_sal(name varchar2, newsal number);     
   3.    function annual_income(name varchar2) return number;    
   4.  end;   

  
     包的规范只包含了过程和函数的说明,但是没  过程和函数的实现代码。包体用于实现包规范中的过程和函数。  
     2、建立包体可以使用 create package body 命令  
           --给包 sp_package 实现包体  
Sql 代码    

   1.  create or replace package body sp_package is   
   2.    procedure update_sal(name varchar2, newsal number)      
   3.    is   
   4.    begin      
   5.         update emp set sal = newsal where ename = name;    
   6.    end;     
   7.         function annual_income(name varchar2) return number is   
   8.          annual_salary number;    
   9.    begin    
 10.          select sal * 12 + nvl(comm, 0) into annual_salary from emp where ename = name; 
 11.    return annual_salary;         
 12.    end;      
 13. end;      
 14.   /   

 
    3、如何调用包的过程或是函数  

    ----------------------- Page 73-----------------------

    当调用包的过程或是函数时,在过程和函数前需要带  包名,如果要访问其它方案的包,还需要在包名前加方案名。  
    如:  
    SQL> call sp_package.update_sal('SCOTT', 1500);  
    特别说明:  
    包是pl/sql 中非常重要的部分,我们在使用过程分页时,将会再次体验它的威力

分享到:
评论

相关推荐

    Oracle删除当前用户下的所有表、视图、序列、函数、存储过程、包

    Oracle删除当前用户下的所有表、视图、序列、函数、存储过程、包 Oracle删除当前用户下的所有表、视图、序列、函数、存储过程、包

    oracle 购物系统(包括表,视图,序列,索引,触发器,程序包,等等)

    Oracle购物系统是一个全面的数据管理平台,它包含了数据库设计的核心元素,如表、视图、序列、触发器、程序包等,这些都是构建复杂业务逻辑和高效数据处理的关键组件。以下是对这些概念的详细解释: 1. **表**:在...

    Oracle入门学习文档toad

    "Oracle入门学习文档toad"是一套专为初学者设计的资料集,它涵盖了Oracle数据库的基础知识,包括数据操作、查询、表和视图、存储过程、函数与包等核心概念。以下是这些章节的主要知识点: 第1章:Oracle基础教程 本...

    开发篇之Oracle触发器心得

    1. **对象所有权**:确保表、序列和索引等核心数据库对象创建在相应的用户表空间中,而视图、别名等辅助对象应创建在Apps用户下。避免将表直接建在APPS下,以免引发权限问题和删除操作失败。 2. **SQL脚本编写**:...

    计算机软件-编程源码-Oracle 讲义.zip

    通过学习讲义中的源码,我们可以了解到如何编写存储过程、触发器、函数和包,这些都是在Oracle中实现业务逻辑的关键工具。同时,源码分析还能帮助我们理解数据库性能优化,如索引的创建和使用,以及查询优化器的工作...

    Orace基础经典

    7. **数据库对象**:Oracle数据库包含各种对象,如表、视图、索引、序列、同义词和存储过程等。理解这些对象的作用和创建方法,以及如何通过SQL语句进行操作,是数据库设计和管理的基础。 8. **PL/SQL**:PL/SQL是...

    21天学通Oracle课后答案解析.rar

    3. **数据库对象**:掌握如何创建和管理各种数据库对象,如表、索引、序列、存储过程、触发器、函数和包。 4. **用户管理与权限**:学习如何创建用户,分配权限,理解角色的概念,以及如何进行权限的撤销和继承。 ...

    oracle所有知识点笔记(全)

    基本的sql语法,触发器,存储过程,存储函数, 流程控制,游标,异常处理,记录类型,视图, 控制用户权限,高级子查询,set运算符, 基本的sql_Select语句 运算符,多表联查,排序,组函数,序列,索引,同义词, ...

    oracle数据字典及视图

    5. 序列、同义词、触发器、存储过程和函数的定义。 6. 表空间和数据文件:存储数据库对象的位置和大小信息。 7. 用户和角色的密码策略:过期时间、最小密码长度等。 8. 归档和重做日志文件:数据库的恢复信息。 ...

    Oracle初学者指南

    掌握Oracle中的各种数据库对象,如表、视图、索引、序列、存储过程、触发器、函数和包,以及它们的作用和创建方法。 6. **数据库管理** 学习如何管理用户、权限和角色,理解SYS和SYSTEM等内置用户的角色,以及...

    oracle开发入门书籍

    此外,为了更有效地管理和维护数据,Oracle还提供了诸如触发器、存储过程和函数等数据库对象。这些数据库对象是存储在数据库中的代码,可以在特定事件发生时自动执行,或者在需要时被调用。 除了数据管理之外,...

    Oracle开发笔记

    "Oracle开发笔记" Oracle 是一种关系型数据库...Oracle 开发笔记提供了许多有价值的知识点,涵盖了序列建立、存储过程、常用函数、异常处理、游标实现和语句优化等方面,都是 Oracle 开发者们必须掌握的重要技能。

    ORACLE操作与管理课件

    Oracle数据库中的对象包括表、视图、索引、序列、触发器、存储过程、函数和包等。这些对象构成了数据库的主体结构,用于存储和操作数据。理解如何创建、查询和管理这些对象对于数据库管理员至关重要。 3. **Oracle...

    oracle 详细讲解教程

    Oracle的详细介绍包括其软件体系结构、数据库基础、SQL语法、数据字典、数据类型、体系结构、数据操作语言(DDL)、数据操作语言(DML)、约束、视图、索引、序列、同义词、PL/SQL编程、游标、存储过程、触发器、事务...

    Orcal 数据库触发器文件

    - 如果触发器导致性能问题,考虑重构触发器,或者使用其他数据库特性,如物质化视图、物化查询表或存储过程。 总结来说,Oracle数据库触发器是一种强大的工具,用于扩展数据库的行为,但需要谨慎使用,以防止性能...

    ORACLE教材

    第八章:管理索引、视图与序列使用约束 索引概述 B树索引(默认) 位图索引 函数索引 视图 序列 利用OEM操作 第九章:备份与恢复 脱机备份与恢复 联机备份与恢复 逻辑备份与恢复 第十章:sqlplus基础 ...

    Oracle自主学习核心资料

    "存储过程、函数和包"进一步提升了数据库的复用性和模块化。存储过程是一组预编译的SQL语句,可以封装在一起并按需调用;函数返回一个值,常用于计算或验证;包则是将相关的存储过程和函数打包的集合,提供了更好的...

    Oracle详解ppt

    "第8章 存储过程、函数和包.ppt"讲解了Oracle的程序设计元素。存储过程是预编译的SQL语句集合,可以提高执行效率;函数是返回单一值的存储过程,而包则可以封装相关的过程和函数,提供模块化的代码管理。 "第9章 ...

Global site tag (gtag.js) - Google Analytics