我正在处理SQL函数
我创建了一个查询和查询成功运行,但我希望将它们转换成SQL函数。
我在查询日期和年份中返回两个参数
我想将SQL查询转换为SQL函数(见下图)

sql查询
Declare @dateofbirth datetime
Declare @currentdatetime datetime
Declare @years varchar(4)
Declare @days varchar(4)
set @dateofbirth = '2020-01-25 '
set @currentdatetime = getdate()
select @years = datediff(year,@dateofbirth,@currentdatetime)
select @days = datediff(DAY,@dateofbirth,@currentdatetime)
select @years + ' years,'
select @days + ' days,'我可以使用多语句表值函数(MSTVF),因为我的查询返回多个参数天和年。
3在ssms中可用的函数
- new inline table valued function
- scalar multi statement table valued function
我不知道应该使用哪种功能?
我想把SQL查询转换成SQL函数吗?
发布于 2020-06-01 04:31:34
您可以使用Scalar函数来实现这一点。
但是您必须在输出时使用CONCAT函数,没有其他选项可以在函数中返回多选择查询。
您还可以使用表值函数获得表格式的输出。
CREATE Function dbo.Years_Days(@dateofbirth datetime, @currentdatetime datetime)
RETURNS VARCHAR(MAX) AS
BEGIN
Declare @years varchar(4)
Declare @days varchar(4)
set @currentdatetime = ISNULL(@currentdatetime,getdate());
select @years = datediff(year,@dateofbirth,@currentdatetime)
select @days = datediff(DAY,@dateofbirth,@currentdatetime)
RETURN @years + ' years,' + @days + ' days,'
END
SELECT dbo.Years_Days( '2020-01-25 ', NULL);函数的类型取决于返回数据类型
如果返回的数据类型是一个表,那么它需要是一个表值函数.
此外,单击以下链接:
https://stackoverflow.com/questions/62125245
复制相似问题