2011-08-30 43 views
6

我有我需要使用的函數,我傳入一個var char,並將記錄插入到名爲使用@ValueList的表中。不過,我不知道如何調用/使用此功能?我該如何調用返回一個表並接受varchar的函數?

ALTER FUNCTION [dbo].[GetListFromCSVString] 
(   
     @csvString varchar(500) 
) 
RETURNS @ValueList TABLE 
(
     ListValue varchar(50) 
) 
AS 
begin 
     -- body 

End 

回答

7
select ListValue 
from dbo.GetListFromCSVString('1,2,3') 

結果:

ListValue 
---------- 
1 
2 
3 

如果參數給函數是你必須使用cross apply獲取值的列表中源表的每一行的另一個表中的字段。

-- Table to test on 
declare @T table 
(
    ID int identity primary key, 
    SomeColumn varchar(500) 
) 

-- Sample data 
insert into @T values('1,2,3') 
insert into @T values('a,b,c') 

-- Use the function 
select ST.ID, 
     GL.ListValue 
from @T as ST 
    cross apply dbo.GetListFromCSVString(ST.SomeColumn) as GL 

結果:

ID   ListValue 
----------- ---------- 
1   1 
1   2 
1   3 
2   a 
2   b 
2   c 
+0

我不應該能夠在變量值列表傳遞的表名? – Jules

+0

@Jules - 不知道我明白。 '@ ValueList'是函數的返回值而不是參數。 –

+0

我已經粘貼了整個函數,正如你所看到的[at] ValueList是一個表名。 – Jules

相關問題