Sqlserver
 sql >> Datenbank >  >> RDS >> Sqlserver

Tabellenwertparameter in gespeicherter Prozedur und Entity Framework 4.0

Ich stimme zu, dass das Übergeben eines CSV-Stichs in diesem Fall die beste Lösung ist. Ich möchte einen einfacheren Weg zum Aufteilen von CSV-Strings vorschlagen, ohne Tabellen und Funktionen zu erstellen, indem ich CTE:

verwende
declare @separator char(1);
set @separator = ',';

;with baseCte as
(select left(@ValueList, charindex(@separator, @ValueList) - 1) as Value,
substring(@ValueList, charindex(@separator, @ValueList) + 1, len(@ValueList)) 
as rest
union all
select left(rest, charindex(@separator, rest) - 1) as Value, 
substring(rest, charindex(@separator, rest) + 1, len(rest)) from baseCte
where len(rest) > 1
)
select Value from baseCte
OPTION (MAXRECURSION 0);