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代码 还未涉及到略

原文地址:https://www.cnblogs.com/fjptwwf/p/6278043.html