儲存過程(stored procedure), 是一組為了完成特定功能的sql 語句,集經編譯後
儲存在資料庫中,使用者通過指定儲存過程的名字並給出引數,如果該儲存過程帶有引數來執行
它。儲存過程具有以下優點
1.在資料庫中儲存的儲存過程都是編譯過的,執行速度快。
2.允許模組化程式設計,型別方法的復用。
3.提高了效能的安全性,防止sql注入。
4.呼叫時減少網路流通量,只傳輸儲存過程名稱。
系統儲存過程一般以sp_或xp_開頭,使用者儲存過程一般以usp_開頭。
呼叫儲存過程用關鍵字exec
1.建立乙個名為usp_helloworld儲存過程
createproc
usp_helloworld
asbegin
'hello world!!!';
end
2.建立乙個帶引數儲存過程,並輸出兩個的和。
--帶引數儲存過程
create
proc
usp_add
@i1int
,
@i2int
asbegin
@i1+
@i2end
呼叫的時候要傳遞兩個引數
exec usp_add 100,200
3.如果已經存在的儲存過程名稱,要通過alter修改。
設定變數@i2的預設值,有預設值的引數可以傳遞引數值。
alterproc
usp_add
@i1int
,
@i2int
=100
asbegin
@i1+
@i2end
exec usp_add 500--輸出結果為600
4.如果第乙個無缺省,第二個有預設值,只給第乙個傳值,可以採用顯示傳值。
exec usp_add @i1=500
exec usp_add @i2
=100,@i1
=300
5.有返回值的儲存過程
宣告output型別變數,型別c#中的out。
alterproc
usp_add
@i1int
,
@i2int
=100
,
@sum
intoutput
asbegin
@i1+
@i2end
declare
@val
intexec usp_add @i1
=2000,@i2
=500,@sum
=@val
output
@val
6.讓英語及格成績超過一半。
如果成績不足一半,迴圈執行加分操作,直到及格成績達到半數。
createproc
usp_promote
@passline
int=
60as
begin
declare
@count
int,@loser
int,@halfcount
intset
@count
=(select
count(*) from
scores)
set@loser
=(select
count(*) from scores where english<
@passline
)
set@halfcount
=ceiling(@count
/2.0
)
while
@halfcount
<
@loser
begin
update scores set english=english+
2where english<
@passline
set@loser
=(select
count(*) from scores where english<
@passline
)
endend
exec usp_promote
關於Sql儲存過程的了解
儲存過程procedure是一組為了完成特定功能的sql語句集合,經編譯後儲存在資料庫中,使用者通過指定儲存過程的名稱並給出引數來執行。儲存過程中可以包含邏輯控制語句和資料操縱語句,它可以接受引數 輸出引數 返回單個或多個結果集以及返回值。由於儲存過程在建立時即在資料庫伺服器上進行了編譯並儲存在資料...
SQL儲存過程
什麼是儲存過程呢?定義 將常用的或很複雜的工作,預先用sql語句寫好並用乙個指定的名稱儲存起來,那麼以後要叫資料庫提供與已定義好的儲存過程的功能相同的服務時,只需呼叫execute,即可自動完成命令。講到這裡,可能有人要問 這麼說儲存過程就是一堆sql語句而已啊?microsoft公司為什麼還要新增...
sql儲存過程
概念 sql server提供了一種方法,它可以將一些固定的操作集中起來由sql server資料庫伺服器來完成,以實現某個任務,這種方法就是儲存過程。儲存過程是sql語句和可選控制流語句的預編譯集合,儲存過程在資料庫中可由應用程式通過乙個呼叫執行,而且允許使用者申明變數 有條件的執行以及其它強大的...