`
Appleses
  • 浏览: 343721 次
  • 性别: 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 购物系统(包括表,视图,序列,索引,触发器,程序包,等等)

    包括11张表,4个视图,15个DML触发器,1个替代触发器,若干个序列和存储过程,只要运行一个SQL文件就可以了。

    Oracle 入门文档2

    Oracle笔记 五、创建表、约束、视图、索引、序列、同义词、表空间 Oracle笔记 六、PL/SQL简单语句块、变量定义 Oracle笔记 七、PL/SQL 异常处理 Oracle笔记 八、PL/SQL跳转/判断/循环语句块 Oracle笔记 九、PL/...

    Oracle 入门文档

    Oracle笔记 五、创建表、约束、视图、索引、序列、同义词、表空间 Oracle笔记 六、PL/SQL简单语句块、变量定义 Oracle笔记 七、PL/SQL 异常处理 Oracle笔记 八、PL/SQL跳转/判断/循环语句块 Oracle笔记 九、PL/...

    Oracle数据库教程

    数据库基础,Oracle入门,查询基础,单行函数,分组函数,多表查询,子查询,高级查询,数据字典,Oracle数据类型,Oracle体系结构(DBA),DDL(改变表结构),DML(改变数据结构),约束,视图,索引,序列、同义...

    oracle所有知识点笔记(全)

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

    oracle常用命令-一完整的电子商务网案例

    Oracle常用命令5(同义词、视图、索引) Oracle常用命令6(PL/SQL) Oracle常用命令7(游标) Oracle常用命令8(过程) Oracle常用命令9(函数) Oracle常用命令10(程序包) Oracle常用命令11(触发器) ...

    ORACLE教材

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

    Oracle从入门到高级应用的全部课程文档

    这是我学习Oracle时,老师给的讲义,包含了Oracle从入门到高级应用的全部资料。 ...Day09-存储过程.pdf Day10-变量定义和循环控制.pdf Day11-plsql游标和函数.pdf Day12-触发器.pdf Day13-索引.pdf

    Oracle Database 11g完全参考手册中文版.part1

    创建数据库表、序列、索引、视图和用户账户 构造SQL语句、过程、查询和子查询 使用虚拟专用数据库和透明数据加密优化安全性 使用SQL*oader乘10racle Data Pump导入和导出数据 使用SQL重放、变更管理和缓存结果 使用...

    Oracle 10g数据库管理、应用与开发标准教程

    Oracle数据库体系结构,SQL基本查询,修改SQL数据与SQL*Plus命令,PL/SQL编程基础,用户、模式和表,高级查询,过程、函数和程序包,表类型,索引,视图、序列和同义词,触发器,事务与并发控制,安全,管理存储结构...

    oracle使用管理笔记(一些经验的总结)

    18.oracle 序列(sequence) 39 19.oracle 索引 40 20.oracle管理权限和角色 42 21.PL/SQL 47 (1)存储过程简单版本 47 (2)存储过程升级版本 49 (3)函数 50 (4)包 50 (5)触发器 51 PL/SQL语法数据类型 57 (6)PL/SQL进阶...

    信永国际 中文超详细Oracle教程

    第二十章 存储过程 第二十一章 触发器 第二十二章 事务(数据库系统概论) 第二十三章 用户管理 第二十四章 备份 恢复 SQLLoader 第二十五章 数据库设计范式 第二十六章 数据库设计工具 第二十七章 对象关系...

    Navicat Premium操作手册.7z

    3Oracle 外部表访问参数59Oracle 索引组织表59Oracle 索引组织表选项59Oracle 视图60Oracle 函数或过程61Oracle 数据库链接62Oracle 索引63Oracle Java65Oracle 实体化视图66Oracle 实体化视图日志68Oracle 包69...

    oracle database 10g 完整参考手册part1

    第17章 创建和管理表、视图、索引、群集和序列 第18章 Oracle基本安全 第Ⅲ部分 高级内容 第19章 高级安全性—— 虚拟专用数据库 第20章 使用表空间 第21章 用SQL*Loader加载数据 第22章 使用Data Pump导入和导出 第...

    Oracle Database 11g完全参考手册中文版.part2

    创建数据库表、序列、索引、视图和用户账户 构造SQL语句、过程、查询和子查询 使用虚拟专用数据库和透明数据加密优化安全性 使用SQL*oader乘10racle Data Pump导入和导出数据 使用SQL重放、变更管理和缓存结果 ...

    Oracle从基础到熟练(太实用了)

    ①:存储过程 ②:函数 ③:自主事务处理 ④:包规范|包主体 十一.触发器|内置包 ①:触发器类型 ②:触发器原理 ③:new和old 两个行类型变量 ④:递归 ⑤:内置包 十二.导入导出 ①:导入导出/整个DB/表空间/表/...

    Oracle的ppt教学.zip

    orcale 11g的学习ppt,内容涵盖orcale的各个方面,对于初学者很有帮助,易懂易入门,章节如下 第1章 Oracle 11g数据库简介.ppt ...第11章 存储过程与触发器.ppt 第12章 用户与权限.ppt 第13章 备份与恢复.ppt

    数据库oracle教案.rar

    oracle基础教案包括:数据库基本知识、数据库安装与配置、数据查询语言、多表查询、数据库函数、数据库操纵语言、数据库控制语言、数据库定义语言、数据库事务、视图、序列、索引、触发器、游标、函数、存储过程、...

Global site tag (gtag.js) - Google Analytics