2015-04-02 75 views
2

我研究並嘗試,但無法弄清楚這是我到目前爲止。 我想要它做的是連接Fstring和Lstring,並返回結果加上當前日期在這種情況下@date 我宣佈變量@Fstring和@Lstring作爲輸入和@date作爲getdate函數。 我只能得到它要麼返回日期或@fullname :( ,我不能揣摩出我錯了 在正確的方向上的任何幫助將不勝感激從sql服務器中的函數返回多個值

==== 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 (@[email protected]) 
end 
go 

==== start select ==== 

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

您是否考慮過與一個或多個OUT參數寫一個存儲過程,而不是使用的功能? – 2015-04-02 08:58:15

回答

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。提高返回類型的長度,除非你的函數將返回20

2最大長度的字符串:投的日期時間爲varchar當你想用VARCHAR值concatinate它,除非你會得到類型轉換錯誤

3:刪除分號設置@file名

我的意思是你功能之後:

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))[email protected]) 
end 

執行:

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

輸出:

Apr 2 2015 4:36AMFred Van Vliet 

但是,如果你想返回multiplerecordsfields那麼在這種情況下,你需要使用表值功能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