Я должен зациклить данные в CTE и извлечь каждую запись и обработать на основе значения одного столбца.
CREATE PROCEDURE [dbo].[sp_saveVmssMapping]
(@serverTypes INT = 0,
@vmsses INT = 0,
@regions INT = 0,
@countryList VARCHAR)
AS
WITH countryTbl AS
(
SELECT value
FROM STRING_SPLIT(@countryList, ',')
)
DECLARE @cnt INT = 0;
DECLARE @cnt_total INT;
SET @cnt_total = SELECT COUNT(*) FROM countryTbl;
WHILE @cnt < cnt_total
BEGIN
IF NOT EXISTS (SELECT * FROM VmssCountryMapping
WHERE VmssId = @vmsses
AND Country_code = @userName
AND ServerTypeId = @serverTypes)
BEGIN
INSERT INTO VmssCountryMapping (VmssId, Country_code, ServerTypeId)
VALUES (@vmsses, @userName, @serverTypes)
END
SET @cnt = @cnt + 1;
END
Здесь я создал CTE, в который я добавляю записи, разделенные запятыми.Теперь я буду зацикливать каждую запись и обрабатывать вставку, если она соответствует запросу.