ahmed_sa Ответов: 1

Как разрешить хранимым процедурам работать только один раз ?


проблема

У меня есть хранимая процедура перемещения данных с помощью openrowset на основе инструкции select
Мне нужно изменить хранимую процедуру, чтобы предотвратить повторение данных
предположим у меня есть на столе компания по базе данных SQL server 2012
1 mazda
2 toyotal
при первом выполнении хранимой процедуры она отображается в excel с данными выше
при выполнении хранимой процедуры во второй раз она показывает повторяющиеся данные в excel следующим образом
1 mazda
2 toyotal
1 mazda
2 toyotal
так как же разрешить хранимую процедуру работать только один раз, чтобы предотвратить повторение ?

Что я уже пробовал:

create proc exportcompanydata
(
@ImporterQueueID INT=1,
@InputFilePath Nvarchar(500)='',
@OutputFilePath Nvarchar(500)='',
@UserID INT=1
)
as
 
Declare @sqlout nvarchar(4000);
Set @sqlout='INSERT INTO OPENROWSET(''Microsoft.ACE.OLEDB.12.0'',''Excel 12.0 Xml;HDR=YES;Database='+@OutputFilePath+ ''','' SELECT * FROM [Sheet1$]'' )
			 select CompanyID,CompanyName,PersonLastCheckDate from CompanyManagers.Company with(nolock)
             WHERE  CompanyID IS NOT NULL AND ISNULL(IsDeleted, 0) = 0'

Execute(@sqlout)

Kornfeld Eliyahu Peter

Зачем создавать хранимую процедуру для чего-то, что вы хотите запустить только один раз в жизни?
Выполните параметризованный запрос...

1 Ответов

Рейтинг:
2

RickZeeland

Воспользуйся СУЩЕСТВУЕТ чтобы проверить, существуют ли эти данные уже, см. пример здесь:
SQL Server если существует, то 1 еще 2 - переполнение стека[^]