1.純量值函數
2.內嵌資料表值函數
3.多重陳述資料表值函數
1. 純量值函數 SCALAR FUNCTION
CREATE FUNCTION 年資 (@開始工作時間,@現在or結束工作時間)
RETURNS MONEY
AS
BEGIN
DECLARE @結果 AS MONEY
SET @結果 = YEAR(@開始工作時間) - YEAR(@現在or結束工作時間)
RETURN @結果
END
;
2.內嵌資料表值函數 INLINE TABLE-VALUED FUNCTION
RETURNS MONEY
AS
BEGIN
DECLARE @結果 AS MONEY
SET @結果 = YEAR(@開始工作時間) - YEAR(@現在or結束工作時間)
RETURN @結果
END
;
2.內嵌資料表值函數 INLINE TABLE-VALUED FUNCTION
CREATE FUNCTION 員工資料 (@INPUT_部門)
RETURNS TABLE
AS
RETURN
(
SELECT 部門,員編,姓名,性別,職務
FROM 員工基本檔
WHERE 部門 = @INPUT部門
)
;
3.多重陳述資料表值函數 MULTISTATEMENT TABLE-VALUED FUNCTION
CREATE FUNCTION 誰是代理人 (@INPUT_部門,@INPUT_員工姓名)
RETURNS @回傳的TABLE TABLE
(
姓名 varchar(10),
電話 varchar(10)
)
AS
BEGIN
DECLARE @暫存欄位 varchar(10);
SELECT @暫存欄位 = 代理人
FROM 員工基本檔
WHERE 部門=@INPUT_部門
AND 員工姓名 = @INPUT_員工姓名
INSERT @回傳的TABLE
SELECT 姓名,電話
FROM 員工基本檔
WHERE 員工姓名=@暫存欄位
RETURN
END
;
RETURNS TABLE
AS
RETURN
(
SELECT 部門,員編,姓名,性別,職務
FROM 員工基本檔
WHERE 部門 = @INPUT部門
)
;
3.多重陳述資料表值函數 MULTISTATEMENT TABLE-VALUED FUNCTION
CREATE FUNCTION 誰是代理人 (@INPUT_部門,@INPUT_員工姓名)
RETURNS @回傳的TABLE TABLE
(
姓名 varchar(10),
電話 varchar(10)
)
AS
BEGIN
DECLARE @暫存欄位 varchar(10);
SELECT @暫存欄位 = 代理人
FROM 員工基本檔
WHERE 部門=@INPUT_部門
AND 員工姓名 = @INPUT_員工姓名
INSERT @回傳的TABLE
SELECT 姓名,電話
FROM 員工基本檔
WHERE 員工姓名=@暫存欄位
RETURN
END
;