真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

13-oracle_數(shù)據(jù)庫存儲過程和包的開發(fā)

13-oracle_數(shù)據(jù)庫存儲過程和包的開發(fā)

創(chuàng)新互聯(lián)公司是一家專注于網(wǎng)站建設、成都網(wǎng)站建設與策劃設計,盂縣網(wǎng)站建設哪家好?創(chuàng)新互聯(lián)公司做網(wǎng)站,專注于網(wǎng)站建設十載,網(wǎng)設計領域的專業(yè)建站公司;建站業(yè)務涵蓋:盂縣等地區(qū)。盂縣做網(wǎng)站價格咨詢:18980820575

一:存儲過程 ( 圖片左邊的 procedure 目錄 ) :

在數(shù)據(jù)庫的實際開發(fā)過程中,我們不可能每個腳本用人工的方式執(zhí)行,需要自動的批量提交腳本到數(shù)據(jù)庫執(zhí)行,數(shù)據(jù)庫就提供了像存儲過程這樣的對象,方便開發(fā)人員把處理某個功能或報表的邏輯寫到存儲過程里。

1) 存儲過程的優(yōu)點:

a. 執(zhí)行速度更快:在數(shù)據(jù)庫中保存的存儲過程語句都是編譯過的

b. 允許模塊化程序設計和可移植性更強:類似方法的復用(使用存儲過程可以實現(xiàn)存儲過程設計和編碼工作的分開進行,只要將存儲過程名、參數(shù)、返回信息等告訴編程人員即可);

c. 提高系統(tǒng)安全性:防止 SQL 注入   (執(zhí)行存儲過程的用戶要具有一定的權限才能使用存儲過程)

d. 減少網(wǎng)絡流通量:只要傳輸存儲過程的名稱(在大批數(shù)據(jù)查詢時使用存儲過程分頁查詢比其他方式的分頁要快很多)

e. 在同時進行逐主、從表間的數(shù)據(jù)維護及有效性驗證時,使用存儲過程更加方便,可以有效的利用 SQL 中的事務處理機制。

創(chuàng)建存儲

2) 創(chuàng)建語法:

create or replace procedure p_house_create_data(p_fm_dt date default sysdate - 1 ,

                                                p_to_dt date default sysdate ) is

  /************************************************************

    author    :hf

    created   :2018-08-08

    purpose   : 生成數(shù)據(jù)過程

    parameter        value

    p_fm_dt          2018-08-01( 昨天 )

    p_to_dt          2018-08-02( 當日 )

  *************************************************************/

  /************************************************************

    定義區(qū)間

  *************************************************************/

  v_sqlstate    varchar2 ( 500 );

  v_proc_name   varchar2 ( 64 ) := 'p_house_create_data' ;

  v_fm_dt       date ;

  v_to_dt       date ;

begin

  /************************************************************

    賦值區(qū)間

  *************************************************************/

  v_sqlstate := ' 賦值 ' ;

  v_fm_dt    := trunc (p_fm_dt, 'DD' );

  v_to_dt    := trunc (p_to_dt, 'DD' );

  /************************************************************

    計算區(qū)間

  *************************************************************/

  v_sqlstate := ' 開始 ' ;

  pkg_rpt_system.sys_log(v_proc_name, v_sqlstate, 'OK' , null , null ); -- 寫日志

  v_sqlstate := ' 刪除數(shù)據(jù) ' ;

  delete t_landlord;

  commit ;

 

  v_sqlstate := ' 生成房東信息數(shù)據(jù) ' ;

  insert into t_landlord

  values

    ( '001' , ' 張強 ' , ' 男 ' , '13723870069' , '001' , '2010-03-12' );

  commit ;

  /************************************************************

    結束區(qū)間

  *************************************************************/

  v_sqlstate := ' 結束 ' ;

  pkg_rpt_system.sys_log(v_proc_name, v_sqlstate, 'OK' , null , null ); -- 寫日志

  /************************************************************

    異常區(qū)間

  *************************************************************/

exception

  when others then

    rollback ; -- 回滾數(shù)據(jù)

    pkg_rpt_system.sys_log(v_proc_name,

                           v_sqlstate,

                           'ERROR' ,

                           sqlcode ,

                           substr ( sqlerrm , 1 , 3000 )); -- 寫日志

    commit ;

end p_house_create_data;

 

二:包 ( 圖片左邊的 package bodies 目錄 ) :

其實包可以理解為是對存儲過程和函數(shù)的方便管理,如果過程和函數(shù)多了,不方便查找,比較亂,哪么我們可以把相關的過程放在一起,或把業(yè)務邏輯相關的放在一起維護。

1) 包的構成:

a. 包頭:是對包里的過程和函數(shù)的一個定義,相關于目錄

b. 包體:是對包里的過程和函數(shù)的實現(xiàn),具體代碼的邏輯實現(xiàn)。

2) 創(chuàng)建語法:

-- 包頭

create or replace package pkg_abc_create_data is

  procedure p_house_create_data(p_fm_dt date default sysdate - 1 ,

                                p_to_dt date default sysdate );

end pkg_abc_create_data;

 

-- 包體

create or replace package body pkg_abc_create_data is

 

  procedure p_house_create_data(p_fm_dt date default sysdate - 1 ,

                                p_to_dt date default sysdate ) is

    /************************************************************

      author    :hf

      created   :2018-08-08

      purpose   : 生成數(shù)據(jù)過程

      parameter        value

      p_fm_dt          2018-08-01( 昨天 )

      p_to_dt          2018-08-02( 當日 )

    *************************************************************/

    /************************************************************

      定義區(qū)間

    *************************************************************/

    v_sqlstate  varchar2 ( 500 );

    v_proc_name varchar2 ( 64 ) := 'p_house_create_data' ;

    v_fm_dt     date ;

    v_to_dt     date ;

  begin

    /************************************************************

      賦值區(qū)間

    *************************************************************/

    v_sqlstate := ' 賦值 ' ;

    v_fm_dt    := trunc (p_fm_dt, 'DD' );

    v_to_dt    := trunc (p_to_dt, 'DD' );

    /************************************************************

      計算區(qū)間

    *************************************************************/

    v_sqlstate := ' 開始 ' ;

    pkg_rpt_system.sys_log(v_proc_name, v_sqlstate, 'OK' , null , null );

    v_sqlstate := ' 刪除數(shù)據(jù) ' ;

    delete t_landlord;

    commit ;

    v_sqlstate := ' 生成房東信息數(shù)據(jù) ' ;

    insert into t_landlord

    values

      ( '001' , ' 張強 ' , ' 男 ' , '13723870069' , '001' , '2010-03-12' );

    commit ;

    /************************************************************

      結束區(qū)間

    *************************************************************/

    v_sqlstate := ' 結束 ' ;

    pkg_rpt_system.sys_log(v_proc_name, v_sqlstate, 'OK' , null , null );

    /************************************************************

      異常區(qū)間

    *************************************************************/

  exception

    when others then

      rollback ;

      pkg_rpt_system.sys_log(v_proc_name,

                             v_sqlstate,

                             'ERROR' ,

                             sqlcode ,

                             substr ( sqlerrm , 1 , 3000 ));

      commit ;

  end p_house_create_data;

end pkg_abc_create_data;

 


本文名稱:13-oracle_數(shù)據(jù)庫存儲過程和包的開發(fā)
地址分享:http://weahome.cn/article/pgegpi.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部