SQL Server FUNCTION的使用

FUNCTION與STORED PROCEDURE有點像
但有很大的區別
FUNCTION比較像是數學中函數
PROCEDURE比較像制定好的工作流程
差別如下:

  1. 預存程序只能獨立執行;函數可搭配各種SQL語法
  2. 預存程序可執行各種操作;函數原則上只能查詢資料,
    無法異動資料庫,而預存程序可以
  3. 預存程序可以有帶入型、帶出型參數及整數的傳回值
    函數只有帶入型參數及各種預先定義好的傳回型別






USE 練練
GO
--純量值函數,只有一個純量值-------------------------
CREATE FUNCTION 匠匠平均價() RETURNS MONEY
AS
 BEGIN
  DECLARE @AvgPrice MONEY
  SELECT @AvgPrice =AVG(價錢) FROM 匠匠
  RETURN @AvgPrice
 END
GO

SELECT dbo.匠匠平均價()
SELECT *,dbo.匠匠平均價() AS 匠匠均價 
FROM 巨巨
WHERE 價錢 >dbo.匠匠平均價()
GO

--------------------------------------------------
--資料表值函數,回傳了一個TABLE----------------------
CREATE FUNCTION 巨巨區間產品(@price1 MONEY,@price2 MONEY) RETURNS TABLE
WITH SCHEMABINDING
AS
 RETURN(SELECT 產品編號,品名,價錢 FROM dbo.巨巨
   WHERE 價錢 BETWEEN @price1 AND @price2)
GO

SELECT * FROM 巨巨區間產品(30,50)
GO

留言

熱門文章