儲存過程
sql語句執行的時候要先編譯,然後執行。儲存過程就是編譯好了的一些sql語句。應用程式需要用的時候直接呼叫就可以了,所以效率會高。
儲存過程介紹
儲存過程是由流控制和sql語句書寫的過程,這個過程經編譯和優化後儲存在資料庫伺服器中,應用程式使用時只要呼叫即可。在oracle中,若干個有聯絡的過程可以組合在一起構成程式包。
使用儲存過程有以下的優點:
* 儲存過程的能力大大增強了sql語言的功能和靈活性。儲存過程可以用流控制語句編寫,有很強的靈活性,可以完成複雜的判斷和較複雜的 運算。
* 可保證資料的安全性和完整性。
# 通過儲存過程可以使沒有許可權的使用者在控制之下間接地訪問資料庫,從而保證資料的安全。
# 通過儲存過程可以使相關的動作在一起發生,從而可以維護資料庫的完整性。
* 再執行儲存過程前,資料庫已對其進行了語法和句法分析,並給出了優化執行方案。這種已經編譯好的過程可極大地改善sql語句的效能。 由於執行sql語句的大部分工作已經完成,所以儲存過程能以極快的速度執行。
* 可以降低網路的通訊量。
* 使體現企業規則的運算程式放入資料庫伺服器中,以便:
# 集中控制。
# 當企業規則發生變化時在伺服器中改變儲存過程即可,無須修改任何應用程式。企業規則的特點是要經常變化,如果把體現企業規則的運算程式放入應用程式中,則當企業規則發生變化時,就需要修改應用程式工作量非常之大(修改、發行和安裝應用程式)。如果把體現企業規則的 運算放入儲存過程中,則當企業規則發生變化時,只要修改儲存過程就可以了,應用程式無須任何變化。
資料庫儲存過程的實質就是部署在資料庫端的一組定義**以及sql。
利用sql的語言可以編寫對於資料庫訪問的儲存過程,其語法如下:
1create
proc
[edure
] procedure_name [
;number]2
[3 ][
varying][
= default][
output]4
] 5[,...n]6
[with 7
12]13[
for replication]14
as15 sql_statement [
...n
]
[ ]內的內容是可選項,而()內的內容是必選項,
例: 若使用者想建立乙個刪除表tmp中的記錄的儲存過程select_delete可寫為:
1create
proc select_del as
2delete tmp
例:使用者想查詢tmp表中某年的資料的儲存過程
1create
proc select_query @year
intas
2select
*from tmp where
year
=@year
在這裡@year是儲存過程的引數
例:該儲存過程是從某結點n開始找到最上層的父親結點,這種經常用到的過程可以由儲存過程來擔當,在網頁中重複使用達到共享。
空:表示該結點為頂層結點
fjdid(父結點編號)
結點n 非空:表示該結點的父親結點號
dwmc(單位名稱)
1create
proc search_dwmc @dwidold
int,@dwmcresult
varchar(100
) output 2as
3declare
@stop
int4
declare
@result
varchar(80) 5
declare
@dwmc
varchar(80) 6
declare
@dwid
int7
set nocount on
8set
@stop=1
9set
@dwmc
=""
10select
@dwmc
=dwmc,@dwid
=convert(int,fjdid) from jtdw where id=
@dwidold
11set
@result
=rtrim(@dwmc
) 12
if@dwid=0
13set
@stop=0
14while (@stop
=1) and (@dwid
<>0)
15begin
16set
@dwidold
=@dwid
17select
@dwmc
=dwmc,@dwid
=convert(int,fjdid) from jtdw where id=
@dwidold
18if
@@rowcount=0
19set
@dwmc
=""
20else
21set
@result
=@dwmc
+@result
22if (@dwid
=0) or (@@rowcount=0
) 23
set@stop=0
24else
25continue
26end
27set
@dwmcresult
=rtrim(@result
) 28
29 使用exec pro-name [
pram1 pram2.....
]
儲存過程優點
儲存過程簡介 儲存過程說白了就是一堆 sql 的合併,中間加了點邏輯控制,在處理複雜業務的時候比較實用。比如說,乙個複雜的資料操作。如果你在前台處理的話。可能會涉及到多次資料庫連線。但如果你用儲存過程的話。就只有一次。從響應時間上來說有優勢。也就是說儲存過程可以給我們帶來執行效率提高的好處。另外,程...
儲存過程的優點
1.儲存過程編輯器事先對儲存過程進行了語法檢查處理,避免了因sql語句語法不正確引起執行時出現異常的問題。2.使用儲存過程可提高資料庫執行的效率。這是因為在儲存儲存過程時,資料庫伺服器就已經對其進行了編譯,以後每次執行儲存過程都不需要再重新編譯,而一般的sql語句每執行一次就需要資料庫引擎重新編譯一...
儲存過程的優點
儲存過程 stored procedure 是在大型資料庫系統中,一組為了完成特定功能的sql 語句集,它儲存在資料庫中,一次編譯後永久有效,使用者通過指定儲存過程的名字並給出引數 如果該儲存過程帶有引數 來執行它。儲存過程是資料庫中的乙個重要物件。重複使用。儲存過程可以重複使用,從而可以減少資料庫...