Я говорю с коррекцией, но, насколько я понимаю, цикл немного более ресурсоемкий.
Однако вы также можете выполнить его с помощью цикла.
Обратите внимание, чтоЯ не смог протестировать его, так как у меня нет исходных данных и SP, которые есть у вас, но я уверен, что скрипт является пуленепробиваемым:
DECLARE @LOOP INT
, @iUSCAKEY INT
, @iCAETKEY INT
, @iUSERKEY INT
, @iENTEKEY INT
, @cUSCASTA VARCHAR(10)
, @cUSCASRT VARCHAR(10)
, @iUserId BIGINT
, @cTask VARCHAR(100)
DECLARE @TBL AS TABLE (
ID INT PRIMARY KEY IDENTITY
, iUSCA_KEY INT
, iCAET_KEY INT
, iUSER_KEY INT
, iENTE_KEY INT
, cUSCA_STA VARCHAR(10)
, cUSCA_SRT VARCHAR(10)
, iUserId BIGINT
, cTask VARCHAR(100)
)
INSERT INTO @TBL (
iUSCA_KEY
, iCAET_KEY
, iUSER_KEY
, iENTE_KEY
, cUSCA_STA
, cUSCA_SRT
, iUserId
, cTask
)
SELECT
iUSCA_KEY
, iCAET_KEY
, iUSER_KEY
, iENTE_KEY
, cUSCA_STA
, cUSCA_SRT
, iUserId
, cTask
FROM BAUSER
WHERE USER_STA = '1'
SELECT @LOOP = MIN(ID) FROM @TBL
WHILE @LOOP IS NOT NULL
BEGIN
SELECT
@iUSCAKEY = iUSCA_KEY
, @iCAETKEY = iCAET_KEY
, @iUSERKEY = iUSER_KEY
, @iENTEKEY = iENTE_KEY
, @cUSCASTA = cUSCA_STA
, @cUSCASRT = cUSCA_SRT
, @iUserId = iUserId
, @cTask = cTask
FROM @TBL
WHERE ID = @LOOP
EXEC sp_BAUSCA_BASE
@iUSCA_KEY = @iUSCAKEY
, @iCAET_KEY = @iCAETKEY
, @iUSER_KEY = @iUSERKEY
, @iENTE_KEY = @iENTEKEY
, @dUSCA_DAT = GETDATE()
, @cUSCA_STA = @cUSCASTA
, @cUSCA_SRT = @cUSCASRT
, @iUserId = @iUserId
, @cTask = @cTask
SELECT @LOOP = MIN(ID) FROM @TBL WHERE ID > @LOOP
END
Дайте мне знать, сработало ли это.