从sql server中的函数返回多个值

时间:2015-04-02 04:02:58

标签: sql sql-server sql-server-2012

我研究过并试过但是无法弄清楚这是我到目前为止所得到的。 我想要它做的是连接Fstring和Lstring并返回结果加上当前日期@date 我将变量@Fstring和@Lstring声明为输入,将@date声明为getdate函数。 我只能让它返回日期或@fullname :( 我无法弄清楚我错在哪里 任何正确方向的帮助将不胜感激

==== start function===
create function ufn_function_4
(
        @Fstring varchar(20) , @Lstring varchar(20)
)
returns varchar (20)
as
begin
Declare @date datetime = getdate()
Declare @fullname varchar(100)
set @fullname = @Fstring + ' ' + @Lstring;
return (@date+@fullname)
end
go

==== start select ====

select [dbo].[ufn_function_4]('Fred','Van Vliet');

2 个答案:

答案 0 :(得分:0)

更改此行,因为只有一个VARCHAR(20)RETURN

SET @fullname = @Fstring + ' ' + @Lstring + ' ' + CONVERT(VARCHAR(20), @date)

如果要以单独的值返回两者,则需要定义表值函数

类似的东西:

CREATE FUNCTION ufn_function_4
(   
    @Fstring varchar(20) , @Lstring varchar(20)
)
RETURNS @table TABLE ([date] DATETIME, fullname VARCHAR(1000)) 
AS
BEGIN

    Declare @date datetime = getdate()
    Declare @fullname varchar(100)
    set @fullname = @Fstring + ' ' + @Lstring;

    INSERT INTO @table
        SELECT @date, @fullname

    RETURN
END

调用功能

SELECT * FROM ufn_function_4('james', 'connery')

答案 1 :(得分:-1)

你创建的函数是一个标量函数,除了以下几乎你做得很好:

1。增加返回类型的长度,除非您的函数返回最大长度为20的字符串

2:当你想用varchar值连接它时,将日期时间转换为varchar,除非你得到类型转换错误

3:在设置@file name

后删除分号

我的意思是你的功能:

create function ufn_function_4
(
        @Fstring varchar(20) , @Lstring varchar(20)
)
returns varchar (100)
as
begin
Declare @date datetime = getdate()
Declare @fullname varchar(100)
set @fullname = @Fstring + ' ' + @Lstring
return (cast(@date as varchar(20))+@fullname)
end

执行:

select [dbo].[ufn_function_4]('Fred','Van Vliet');

输出:

Apr 2 2015 4:36AMFred Van Vliet

但是如果您想要返回multiple recordsfields,那么在这种情况下您需要使用表值功能只是change the return type成为一个表:

CREATE FUNCTION ufn_function_4
(   
    @Fstring varchar(20) , @Lstring varchar(20)
)
RETURNS @table TABLE ([date] DATETIME, fullname VARCHAR(100)) 
AS
BEGIN

    Declare @date datetime = getdate()
    Declare @fullname varchar(100)
    set @fullname = @Fstring + ' ' + @Lstring

    INSERT INTO @table
        SELECT @date, @fullname

    RETURN

运行就像:

SELECT * FROM ufn_function_4('Fred','Van Vliet')

输出:

date                         fullname
April, 02 2015 05:11:38      Fred Van Vliet