• <nav id="wkkge"><strong id="wkkge"></strong></nav>
  • <menu id="wkkge"></menu>
  • Oracle教程
    Oracle練習題

    Oracle存儲過程與觸發器

     

     

    存儲過程

     

    存儲過程最直接的理解:就是保存了批量的sql(select,insert,if for),以后可以通過一個名字把這些批量的sql執行,使用存儲過程在大批量數據查詢或計算時會帶來高性能,存儲過程編寫和調試比較復雜,不同數據庫產品存儲過程差異非常大,很難實現平滑一致。

     

    ● 建立存儲過程

     

    create or replace procedure proc_test(in_var number,out_var out sys_refcursor)
    as
    begin
    	open out_var for select * from emp where deptno=in_var;
    end; 

     

     ● 執行存儲過程

     

    var ret refcursor
    exec proc_test(20,:ret)
    print :ret

     

     

    觸發器

     

    觸發器是特殊的存儲過程,它與數據庫的insert、update和delete相關聯,如定義完成觸發器之后,會在insert、update或delete語句執行前執行后自動執行觸發器中的內容。

     

    觸發器示例,向emp表中加入數據,采用觸發器自動再向t_log表里加入一條數據。

     

    ● 首先建立t_log表

     

    create table t_log (
    	log_id number(10) primary key,
    	log_time date
    ) 

     

    ● 為建立t_log的主鍵建立sequence

     

    create sequence seq_log_id start with 1 increment by 1;

     

    ● 建立觸發器

     

    create or replace trigger tri_test 
      after insert on emp 
    begin
       insert into t_log(log_id, log_time) values(seq_log_id.nextval, sysdate);
    end; 

     

    ● 向emp表中加入數據

     

    insert into emp(empno, deptno) values(7777, 10);

     

     

    在emp中多了一條數據empno為7777,在t_log中自動加入了一條數據,這就是觸發器的作用。

     

    全部教程
  • <nav id="wkkge"><strong id="wkkge"></strong></nav>
  • <menu id="wkkge"></menu>
  • 面对面棋牌游戏