自定義函數
如果RETURNS 子句指定一種標量數據類型,則函數為標量值函數
如果RETURNS 子句指定 TABLE,則函數為表值函數
如果RETURNS 子句指定的TABLE 不附帶列,則該函數為內嵌表值函數
如果RETURNS 子句指定的TABLE 類型帶有列及其數據類型,則該函數是多語句表值函數
標量值函數
返回的結果只是一個標量,返回的結果就是一種類型的一個值
調用方法(select SUMRESULT(6443) as result)
--標量值函數(CREATE function 函數名(@參數名 類型)) CREATE function SUMRESULT(@USER_ID VARCHAR(250)) --返回值數據類型(Returns 返回值數據類型) Returns varchar(250)
AS
Begin --聲明變量或返回值 Declare @ret varchar(250) --給變量賦值 set @ret='' --給變量賦值 select @ret=SUM(HOLIDAYS) FROM JKZX_NXJ WHERE USER_ID=@USER_ID--參數 --返回值數據 return @ret End
--標量值函數 create function GetSum (@num1 int , @num2 int )
Returns int as begin declare @return int set @return = @num1 + @num2 return @return end select dbo.GetSum(1,3)
內聯表值函數
內聯表值函數返回的是表數據,它返回的是一個表內表值型函數沒有由BEGIN-END語句括起來的函數體
調用方法(SELECT * FROM DSOA.CATABLR(6443))
--表值函數(CREATE function 函數名(@參數名 類型)) CREATE function CATABLR(@User_id varchar(250)) --返回表數據類型 Returns TABLE AS --返回查詢的表數據 Return( --SELECT 語句 SELECT [ID],[YEAR],[CREATEDATE],[USER_ID],[DEPT] FROM JKZX_NXJ WHERE USER_ID=@USER_ID ) GO
多語句表值函數
多語句表值函數跟內聯表值函數都是表值函數,它們返回的結果都是Table類型
多語句表值函數顧名思義,就是可以通過多條語句來創建Table類型的數據。
這里不同於內聯表值函數,內聯表值函數的返回結果是由函數體內的SELECT語句來決定。
而多語句表值函數,則是需要指定具體的Table類型的結構。也就是說返回的Table,已經定義好要哪些字段返回。所以它能夠支持多條語句的執行來創建Table數據。
....
sql代碼 還未涉及到略