是在大型
資料庫系統
中,一組為了完成特定功能的sql 語句集,儲存在資料庫中,經過第一次編譯後再次呼叫不需要再次編譯,使用者通過指定儲存過程的名字並給出引數(如果該儲存過程帶有引數)來執行它。
◆類似於c語言中的函式
◆用來執行管理任務或應用複雜的業務規則
◆可以帶引數,也可以返回結果
◆可以包含資料操作語句、變數、邏輯控制語句
1、由系統定義,存放在master資料庫中
2、類似c語言中的系統函式
3、系統儲存過程的名稱都以"sp_"開頭或者"xp_"開頭
1、由使用者在自己的資料庫中建立的儲存過程
2、類似c語言中的使用者自定義函式
create proc[edure]儲存過程
@引數1 資料型別=預設值 output
@引數2 資料型別=預設值 output
......
assql語句
go引數分為輸入引數,輸出引數
輸入引數允許預設值
1、執行速度快
2、允許模組化程式設計
3、提高系統安全性
4、減少網路流通量
1、除錯麻煩 2、
重新編譯問題,因為後端**是執行前編譯的,如果帶有引用關係的物件發生改變時,受影響的儲存過程、包將需要重新編譯(不過也可以設定成執行時刻自動編譯)。
3、如果在乙個程式系統中大量的使用儲存過程,到程式交付使用的時候隨著使用者需求的增加會導致資料結構的變化,接著就是系統的相關問題了,最後如果使用者想維護該系統可以說是很難很難、而且代價是空前的,維護起來更麻煩
只返回單一記錄集的儲存過程
-------------建立名為getuseraccount的儲存過程----------------
create procedure getuseraccount
asselect * from useraccount
go-------------執行上面的儲存過程----------------
exec getuseraccount
同時返回引數和記錄集的儲存過程
-------------建立名為getuseraccount的儲存過程----------------
create procedure getuseraccountre2
@username nchar(20),
@userid int output
asif(@username>5)
select @userid=count(*) from useraccount where userid>25
else
set @userid=1000
select * from useraccount
return @@rowcount
go-------------執行上面的儲存過程----------------
exec getuseraccountre2 '7',null
機房收費系統重構之儲存過程的使用
從一開始對於機房收費系統的無從下手,到現在已經接近尾聲,像冬天的迷霧一樣,隨著時間散開了去,對於其也是越來越清晰,想一想,這種學習的過程還真是美妙。當然只學習不去總結是沒有意義的。今天我就來把儲存過程的使用總結一下。拿使用者註冊來說,就是往資料庫裡新增使用者,以方便更多的使用者使用。那麼使用者註冊我...
重構機房收費系統 起步
開始機房收費系統重構也半個月過去了。但看自己的系統連乙個簡單的登入還沒有實現。自己不免有些慚愧了。最近自己的學習狀態總的來說還是不錯的。但是由於自己對原來的知識掌握的不好所以導致了自己不知如何下手。總是感覺有好多的問題要解決 寫軟體開發文件。畫資料流程圖 畫e r圖畫 uml圖 學習使用 ea建立資...
機房重構 儲存過程
在機房重構過程中七層的主線明白了以後就剩下大量的敲 了,這一過程無疑比較枯燥,因此有必要在機房中嘗試一些新東西,比如,儲存過程。那麼什麼是儲存過程呢?儲存過程是存放在伺服器上的預先編譯好的sql語句,在第一次執行時進行語句檢查和編譯,編譯好的儲存過程在快取記憶體中用於後續呼叫,這樣就可以使儲存過程執...