存儲過程與自定義函數


存儲過程說白了就是一堆 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

存儲過程一般用在實現復雜的功能,數據操縱方面。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM