У меня есть хранимая процедура и цикл курсора, который я использую для добавления данных в основной таблице: я добавляю данные из CSV-файла во временную таблицу и из временной таблицы в основную таблицу
alter PROCEDURE [dbo].[CreateHub]
@HubName varchar(100)
AS
INSERT INTO dbo.HUB1
(HUB_NAME)
SELECT @HubName
WHERE (NOT EXISTS
(SELECT ID_HUB, HUB_NAME
FROM dbo.HUB1
WHERE (HUB1.hub_name = @HubName)))
SELECT ID_HUB AS newHubId
FROM dbo.HUB1
WHERE (hub1.hub_name = @HubName)
GO
После этогоготово, есть другой код, который выполняет массовую вставку из CSV-файла и запускает цикл курсора для добавления данных в основную таблицу
bulk insert [dbo].[HUB_temp]
from 'C:\POPAD-DAT\HUB1.csv'
with (fieldterminator = ',', rowterminator = '\n')
go
DECLARE @sSQL AS nVARCHAR(100)
DECLARE @ItemsFromCSV AS nvarchar(200)
DECLARE sql_cursor_hub CURSOR
FOR SELECT HUB_NAME FROM HUB_temp
OPEN sql_cursor_hub
FETCH NEXT FROM sql_cursor_hub
INTO @ItemsFromCSV -- Multiple variables for multiple CSV columns will be required
WHILE @@FETCH_STATUS = 0
BEGIN
set @sSQL = 'EXEC [dbo].[CreateHub] ' + @ItemsFromCSV -- AND OTHER Parameters
print @sSQl
EXECUTE sp_executesql @sSQL
FETCH NEXT FROM sql_cursor_hub
END
CLOSE sql_cursor_hub;
DEALLOCATE sql_cursor_hub;
Запуск курсора не добавляет данные, которые отображаются как один и тот же идентификатор, и показывают разные u =hubname, но без вставки данных
Хотя, если я работаю отдельно, выполняю SP, он добавляет вот так
EXEC [dbo].[CreateHub] 'SGGSP30'
EXEC [dbo].[CreateHub] 'USGSP20'
Не могли бы вы помочь, где именно я ошибаюсь