存儲過程說白了就是一堆 SQL 的合並。
中間加了點邏輯控制。
處理比較復雜的業務時比較實用。
運行效率提高
優勢:
1.只在創造時進行編譯,
以后每次存儲過程都不用在編譯,
而sql語句每執行一次就編譯一次,
所以可提高數據庫執行速度
2.數據庫進行復雜操作時,
可將此復雜操作用存儲過程封裝起來
與事務處理結合一起使用
3.存儲過程可以重復使用,
減少開發量
4.安全性高,
可設定只有某個用戶才具有使用權
create procedure PeoProc2
@pname nvarchar(30)
as;
begin
select work.job
from work,people
where people.id=work.id and people.name=@pname
end
go
execute PeoProc2 N'宋江';
自定義函數
create function FUNC_UserTab_1
(
@pname nvarchar(30)
)
returns table
as
return (select work.job
from work,people
where people.id=work.id and people.name=@pname
)
select * from dbo.FUNC_UserTab_1('吳用')
一、自定義函數:
1. 可以返回表變量
2. 限制頗多,
包括不能使用output參數;
不能用臨時表;
函數內部的操作不能影響到外部環境;
不能update,delete,數據庫表;
3. 必須return 一個標量值或表變量
自定義函數一般用在復用度高,功能簡單單一,爭對性強的地方。
二、存儲過程
1. 不能返回表變量
2. 限制少,
可以執行對數據庫表的操作,
可以返回數據集
3. 可以return一個標量值,
也可以省略return
存儲過程一般用在實現復雜的功能,數據操縱方面。