Один из способов сделать это следующим образом. Я предполагаю, что у вас есть вход, подобный этому формату @ userId = 1, @ListOfSubjects = 'asp, C#'. вот пример proc. Идея состоит в том, чтобы сначала преобразовать список od comma, отделив строку ofsubject к таблице, а затем вставить ее. Для этого я создал образец UDF, который будет перенастраивать таблицу, когда ей передается строка с разделителями-запятыми.
create proc SampleUser_Insert
@UserId int ,
@ListOfSubjects varchar(1000)
as
begin
--set @UserId=1
--set @ListOfSubjects ='asp,c#,mvc'
declare @sampleTable table (userId int, subjects varchar(100))
insert into @sampleTable (userId,subjects)
SELECT @userId, data FROM dbo.[SplitString](@ListOfSubjects, ',')
select * from @sampleTable
end
-- exec SampleUser_Insert 1,'a,b,c'
ОДС выглядит следующим образом
CREATE FUNCTION [dbo].[SplitString]
(
@String NVARCHAR(4000),
@Delimiter NCHAR(1)
)
RETURNS TABLE
AS
RETURN
(
WITH Split(stpos,endpos)
AS(
SELECT 0 AS stpos, CHARINDEX(@Delimiter,@String) AS endpos
UNION ALL
SELECT endpos+1, CHARINDEX(@Delimiter,@String,endpos+1)
FROM Split
WHERE endpos > 0
)
SELECT 'Id' = ROW_NUMBER() OVER (ORDER BY (SELECT 1)),
'Data' = SUBSTRING(@String,stpos,COALESCE(NULLIF(endpos,0),LEN(@String)+1)-stpos)
FROM Split
)
GO
... и что вы пробовали? – DaniDev
Каков ваш вопрос, вы только что сказали нам свои требования, вы не указали, в чем проблема, которую вы реализуете самостоятельно. –
Что вы пробовали ?. – NicoRiff