--FUNCTION
--[回傳單個值]輸入年齡會回傳小於等於這年齡之中年紀最大的人的名字

--CREATE後會在資料庫→可程式性→純量值函式中看到
USE sqltest
GO
ALTER FUNCTION RequestAge
(
    @age INT
)
RETURNS varchar(50)
AS 
BEGIN
    DECLARE @name varchar(50)
    SET @name=
    (
        SELECT TOP 1  name
        FROM Table_1
        WHERE age < @age
        ORDER BY age DESC
    )
    RETURN @name
END
GO
SELECT dbo.RequestAge('30')


--[回傳TABLE]輸入年齡會回傳小於等於這年齡的人的資料(名字性別生日年齡)

--CREATE後會在資料庫→可程式性→資料表函式中看到
USE sqltest
GO
ALTER FUNCTION RequestTable
(
    @age INT
)
RETURNS @table TABLE
(
    name varchar(50),
    sex BIT,
    birthday DATETIME,
    age INT
)
AS 
BEGIN
    INSERT INTO @table(name,sex,age,birthday)
    SELECT a.name,b.sex,a.age,c.birthday
    FROM Table_1 a
      LEFT JOIN Table_2 b
          ON a.name=b.name
         LEFT JOIN Table_3 c
          ON a.name=c.name
    WHERE age < @age

    RETURN 
END
GO


SELECT * FROM RequestTable('30');

 

 

下一篇:基本語法練習題4_預存程序篇

arrow
arrow

    我的暱稱 發表在 痞客邦 留言(0) 人氣()