zoukankan      html  css  js  c++  java
  • 存储过程 视图 触发器 序列

    一、存储过程(Stored Procedure)是在大型数据库系统中,一组为了完成特定功能的SQL 语句集,经编译后存储在数据库中,用户通过指定存储过程的名字并给出参数(如果该存储过程带有参数)来执行它。
    存储过程的优点:

    1.存储过程只在创造时进行编译,以后每次执行存储过程都不需再重新编译,而一般SQL语句每执行一次就编译一次,所以使用存储过程可提高数据库执行速度。
    2.当对数据库进行复杂操作时(如对多个表进行Update,Insert,Query,Delete时),可将此复杂操作用存储过程封装起来与数据库提供的事务处理结合一起使用。
    3.存储过程可以重复使用,可减少数据库开发人员的工作量
    4.安全性高,可设定只有某此用户才具有对指定存储过程的使用权

    存储过程的种类:

    1.系统存储过程:以sp_开头,用来进行系统的各项设定.取得信息.相关管理工作,如 sp_help就是取得指定对象的相关信息

    2.扩展存储过程   以XP_开头,用来调用操作系统提供的功能exec master..xp_cmdshell 'ping 10.8.16.1'

    3.用户自定义的存储过程,这是我们所指的存储过程

    语法

    CREATE OR REPLACE procedure IOCS.SP_D_MATERIALINFOByKey
    (
    p_MATERIALID NVARCHAR2,
    p_flag out integer
    )
    is
    begin
        delete from MATERIALINFO where MATERIALID = p_MATERIALID;
        if SQL%FOUND then
            p_flag := 1;
        else
            p_flag := 0;
        end if;
        commit;
    exception
        when no_data_found
        then
            null;
        when others
        then
            raise;
    end SP_D_MATERIALINFOByKey;

    二、触发器(Trigger)
    触发器(trigger)是个特殊的存储过程,它的执行不是由程序调用,也不是手工启动,而是由事件来触发,比如当对一个表进行操作( insert,delete, update)时就会激活它执行。触发器经常用于加强数据的完整性约束和业务规则等。 触发器可以从 DBA_TRIGGERS ,USER_TRIGGERS 数据字典中查到。
    触发器的优点:

    触发器可通过数据库中的相关表实现级联更改,不过,通过级联引用完整性约束可以更有效地执行这些更改。触发器可以强制比用CHECK约 束定义的约束更为复杂的约束。与 CHECK 约束不同,触发器可以引用其它表中的列。例如,触发器可以使用另一个表中的 SELECT 比较插入或更新的数据,以及执行其它操作,如修改数据或显示用户定义错误信息。触发器也可以评估数据修改前后的表状态,并根据其差异采取对策。一个表中的 多个同类触发器(INSERT、UPDATE 或 DELETE)允许采取多个不同的对策以响应同一个修改语句。

    触发器语法(Oracle)
    CREATE OR REPLACE TRIGGER IOCS.Before_Insert
    BEFORE INSERT
    ON IOCS.BASEINFO 
    REFERENCING NEW AS New OLD AS Old
    FOR EACH ROW
    DECLARE
    tmpVar NUMBER;
    BEGIN
       tmpVar := 0;

       SELECT MySeq.NEXTVAL INTO tmpVar FROM dual;
       :NEW.SequenceColumn := tmpVar;
       :NEW.CreatedDate := SYSDATE;
       :NEW.CreatedUser := USER;

       EXCEPTION
         WHEN OTHERS THEN
           -- Consider logging the error and then re-raise
           RAISE;
    END ;

    三、视图(View):
    视图简介: 

    视图是基于一个表或多个表或视图的逻辑表,本身不包含数据,通过它可以对表里面的数据进行查询和修改。视图基于的表称为基表。视图是存储在数据字典里的一条select语句。 通过创建视图可以提取数据的逻辑上的集合或组合。 


    视图的优点: 

    1.对数据库的访问,因为视图可以有选择性的选取数据库里的一部分。 
    2.用户通过简单的查询可以从复杂查询中得到结果。 
    3.维护数据的独立性,试图可从多个表检索数据。 
    4.对于相同的数据可产生不同的视图。 

    视图的语法:

    1. CREATE [OR REPLACE] [FORCE|NOFORCE] VIEW view_name   
    2.  
    3. [(alias[, alias]...)]   
    4.  
    5. AS subquery  
    6. [WITH CHECK OPTION [CONSTRAINT constraint]]   
    7. [WITH READ ONLY]   

    其中:
    OR REPLACE    :若所创建的试图已经存在,ORACLE自动重建该视图
    FORCE  :不管基表是否存在ORACLE都会自动创建该视图
    NOFORCE   :只有基表都存在ORACLE才会创建该视图
    alias :为视图产生的列定义的别名;
    subquery     :一条完整的SELECT语句,可以在该语句中定义别名;
    WITH CHECK  OPTION :
    插入或修改的数据行必须满足视图定义的约束;
    WITH READ ONLY :
    视图上不能进行任何DML操作。

    例如:

    1. CREATE  OR  REPLACE  VIEW  dept_sum_vw  
    2.    (name,minsal,maxsal,avgsal)  
    3. AS  SELECT d.dname,min(e.sal),max(e.sal),avg(e.sal)  
    4. FROM    emp e,dept d  
    5. WHERE  e.deptno=d.deptno  
    6. GROUP  BY  d.dname;

    四、序列(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;
  • 相关阅读:
    falsk 自定义中间件
    练习题
    4.12 作业题
    测试笔试题2
    测试笔试题
    简答题
    单选题
    普华和诚测试笔试试题
    缺陷报告
    测试用例点
  • 原文地址:https://www.cnblogs.com/doudou618/p/4332180.html
Copyright © 2011-2022 走看看