2011-08-30 7 views
6

Ho una funzione che devo usare, sto passando un var char e inserisco i record in una tabella chiamata usando @ValueList. Tuttavia non sono sicuro di come chiamare/utilizzare questa funzione?Come chiamerei una funzione che restituisce una tabella e accetta un varchar?

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

End 

risposta

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

Risultato:

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

Se il parametro per la funzione è un campo in un'altra tabella è necessario utilizzare cross apply ottenere l'elenco di valori per ogni riga della tabella di origine.

-- 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 

Risultato:

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

non dovrei essere in grado di passare nella variabile valueList come un nome di tabella? – Jules

+0

@Jules - Non sono sicuro di aver capito. '@ ValueList' è il valore restituito dalla funzione non il parametro. –

+0

Ho incollato l'intera funzione, come puoi vedere [at] ValueList è un nome di tabella. – Jules

Problemi correlati