2016年9月8日 星期四

TSQL x 具參數的『多重陳述資料表值』函數 x FUNCTION


繼上次『具參數內嵌資料表值』函數  FUNCTION 後,今天剛好用到『多重陳述資料表值函數』就順便紀錄、複習一下其他種SQL-SERVER的函數

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

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
;