SQL Server 自定義函式
阿新 • • 發佈:2021-08-12
函式的定義
- 標量值函式返回的是一個標量值
- 表值函式返回的是一個查詢結果集
自定義函式型別
- 標量值函式
- 表值函式:又分為2種不同寫法
- 內聯表值函式
- 多語句表值函式
函式的建立
- 標量值函式的語法:RETURNS 返回的是結果的型別
CREATE FUNCTION FUNCTION_NAME(@para_name para_type) RETURNS 返回值型別
[AS]
Begin
.......
return @xx
end
- 表值函式(內聯表值函式)的語法:RETURNS 返回的是table(表)
CREATE FUNCTION FUNCTION_NAME(@para_name para_type) RETURNS table [AS] return select * from xxx
- 表值函式(多語句表值)的語法:RETURNS 返回的是table(表)
CREATE FUNCTION FUNCTION_NAME(@para_name para_type)
RETURNS @Table_Variable_Name table (Column_1 culumn_type,Column_2 culumn_type)
--RETURNS @表變數 table 表的定義(即列的定義和約束)
[AS]
BEGIN
函式體(即 Transact-SQL 語句)
RETURN
END
例項
- 標量值函式:獲取使用者年齡
CREATE FUNCTION GetAge(@birth smalldatetime) RETURNS varchar(20) AS BEGIN DECLARE @age INT SET @age = year(GETDATE())- year(@birth) --如果當前月份比生日月份小,那麼年齡減1 if MONTH(GETDATE()) < MONTH(@birth) set @age = @age -1 --如果當前月份和生日月份一樣,就比較天,天數小就減去1 if MONTH(GETDATE()) = MONTH(@birth) AND DAY(GETDATE()) < DAY(@birth) SET @age = @age -1 RETURN convert(varchar(10),@age)+'歲' END
- 表值函式,根據學號獲取學生資訊
CREATE FUNCTION GetInfo(@sid varchar(20)) RETURNS table
AS
return
select * from Student where sid = @sid