什麼是儲存過程?

2021-04-16 07:12:50 字數 2766 閱讀 6125

一   儲存過程介紹    

儲存過程是由流控制和sql語句書寫的過程,這個過程經編譯和優化    

後儲存在

資料庫伺服器中,使用時只要呼叫即可。在oracle中,若干個    

有聯絡的過程可以組合在一起構成

程式包。    

使用儲存過程有以下的優點:    

*   儲存過程的能力大大增強了sql語言的功能和靈活性。儲存過程可    

以用流

控制語句編寫,有很強的靈活性,可以完成複雜的判斷和較複雜的    

運算。    

*   可保證資料的安全性和完整性。    

#   通過儲存過程可以使沒有許可權的使用者在控制之下間接地訪問資料    

庫,從而保證資料的安全。    

#   通過儲存過程可以使相關的動作在一起發生,從而可以維護資料    

庫的完整性。    

*   再執行儲存過程前,資料庫已對其進行了語法和句法分析,並給出    

了優化執行方案。這種已經編譯好的過程可極大地改善sql語句的效能。    

由於執行sql語句的大部分

工作已經完成,所以儲存過程能以極快的速度執    

行。    

*   可以降低

網路的通訊量。    

*   使體現企業規則的運算程式放入資料庫伺服器中,以便:    

#   集中控制。    

#   當

企業規則發生變化時在伺服器中改變儲存過程即可,無須修改    

任何應用程式。企業規則的特點是要經常變化,如果把體現企業規則的運    

算程式放入應用程式中,則當企業規則發生變化時,就需要修改應用程式    

工作量非常之大(修改、發行和安裝應用程式)。如果把體現企業規則的    

運算放入儲存過程中,則當企業規則發生變化時,只要修改儲存過程就可    

以了,應用程式無須任何變化。    

不同資料庫儲存過程的寫法不一,在後面的講座中將分別介紹oracle    

和sybase儲存過程的用法。    

二   oracle   的儲存過程    

oracle   建立儲存過程的語法為:    

create   [or   replace]   procedure   過程名    

引數1   [in|out|in   out]   資料型別    

[,引數2   [in|out|in   out]   資料型別]...    

pl/sql   語句    

下面舉例說明oracle資料庫儲存過程的寫法和用法。    

可以建立乙個儲存過程,每當使用者修改資料庫的重要資料時,即把    

使用者的使用者名稱、掌諍筒僮骼嘈圖鍬枷呂矗?nbsp;  

create   procedure   update_log   is    

begin    

insert   into   update_log_tab(use_name,update_date,operation)    

values(user,sysdate,'update'    

end;    

可以在恰當的位置呼叫這個儲存過程來記錄使用者對錶的修改。例如下面在    

表sal_comm上建立乙個修改觸發器,每當使用者修改此表後,使用者的名稱、修改    

時間和操作即被記錄在了表update_log_tab中:    

create   trigger   audit_update    

after   update   on   sal_comm    

for   each   row    

begin    

update_log    

end    

--  

三   sybase的儲存過程    

儘管sybase儲存過程的功能和寫法與oracle類似,但他們之間還是    

有一定的差別。下面講述sybase的儲存過程。    

sybase可以用create   procedure

命令生成儲存過程:    

create   procedure   儲存過程名   [;number]    

[[(]   @parameter_name   datatype   [=default]   [output]    

[,   @parameter_name   datatype   [=default]   [output]]...[)]]    

[with   recompile]    

as   sql_statements    

下面是乙個查詢作者編碼、名稱和生日的儲存過程:    

create   proc   p_auths   @author_code   varchar(10)    

as    

select   author_code,   name,   birthdate    

from   auths    

where   author_code=@author_code    

下面執行過程p_auths:    

p_auths   @author_code=a00001    

在create   proc語句中,可以為引數賦預設值,該值可以是任何常量。    

當使用者不提供引數值時,該值便作為引數值提供給過程。      

什麼是儲存過程

sql語句執行的時候要先編譯,然後執行。儲存過程就是編譯好了的一些sql語句。應用程式需要用的時候直接呼叫就可以了,所以效率會高。儲存過程介紹 儲存過程是由流控制和sql語句書寫的過程,這個過程經編譯和優化後儲存在資料庫伺服器中,應用程式使用時只要呼叫即可。在oracle中,若干個有聯絡的過程可以組...

什麼是儲存過程

儲存過程介紹 儲存過程是由流控制和sql語句書寫的過程,這個過程經編譯和優化 後儲存在資料庫伺服器中,使用時只要呼叫即可。在oracle中,若干個 有聯絡的過程可以組合在一起構成程式包。使用儲存過程有以下的優點 儲存過程的能力大大增強了sql語言的功能和靈活性。儲存過程可 以用流控制語句編寫,有很強...

什麼是儲存過程?

一 儲存過程介紹 儲存過程是由流控制和sql語句書寫的過程,這個過程經編譯和優化 後儲存在資料庫伺服器中,使用時只要呼叫即可。在oracle中,若干個 有聯絡的過程可以組合在一起構成程式包。使用儲存過程有以下的優點 儲存過程的能力大大增強了sql語言的功能和靈活性。儲存過程可 以用流控制語句編寫,有...