sql server 自定義函數


自定義函數

如果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代碼 還未涉及到略


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM