다른 TransID 값으로 여러 번 실행해야하는 SQL 스크립트가 아래에 나타납니다. 20,000 개의 TransID를 가지고 있기 때문에 다른 테이블에 20,00 개의 TransID를 놓고 CURSOR를 사용하여 한 번에 하나씩 값을 읽고 전체 쿼리를 실행해야한다고 생각합니다. 린스하고 반복하십시오. 이 스크립트에서 어떻게 작동하는지 정확히 알지 못하고 출력 값을 처리하여 값 당 여러 개의 출력을 얻을 수도 있습니다. 나는 테이블을 떨어 뜨리지 않고 마지막에 테이블을 계속 추가 할 수 있습니까?다른 값으로 SQL 쿼리를 여러 번 실행하십시오.
어떤 도움을 주셔서 감사합니다. 나는 이것에 아주 초록색이다. 내가받은 스크립트는 다음과 같습니다.
DECLARE @TransID uniqueidentifier SET @TransID = '**12f45e78-a234-1b3c-de34-123456789abc**' -- This is what will need to be changed 20,000 times.
DECLARE @CustomerDB nvarchar(100)
DECLARE @FullLength int
DECLARE @TrimmedLength int
CREATE TABLE #HGtmp (
HUGIdentity nvarchar(100))
DECLARE TBLCursor CURSOR FOR
SELECT HoldGroupIdentity, SavesetIdentity FROM HoldSaveset
OPEN TBLCursor
DECLARE @HGIdentity int, @SSID int
FETCH NEXT FROM TBLCursor INTO @HGIdentity, @SSID
WHILE @@FETCH_STATUS = 0
BEGIN
IF @SSID =
(SELECT SavesetIdentity FROM Saveset
WHERE idTransaction = @transID)
BEGIN
DECLARE TBLCursor1 CURSOR FOR
SELECT HoldGroupIdentity, HoldUserGroupID FROM HoldGroup
OPEN TBLCursor1
DECLARE @HGIdentity1 int, @HUGIdentity nvarchar(100)
FETCH NEXT FROM TBLCursor1 INTO @HGIdentity1, @HUGIdentity
WHILE @@FETCH_STATUS = 0
BEGIN
IF @HGIdentity = @HGIdentity1
BEGIN
SET @FullLength = (SELECT LEN(@HUGIdentity))
SET @TrimmedLength = (@FullLength - 40)
SET @CustomerDB = SUBSTRING(@HUGIdentity, 4, @TrimmedLength)
INSERT INTO #HGtmp (HUGIdentity) VALUES (@CustomerDB)
END
FETCH NEXT FROM TBLCursor1 INTO @HGIdentity1, @HUGIdentity
END
CLOSE TBLCursor1
DEALLOCATE TBLCursor1
END
FETCH NEXT FROM TBLCursor INTO @HGIdentity, @SSID
END
SELECT DISTINCT HUGIdentity AS 'DA db with Legal Holds' FROM #HGtmp
CLOSE TBLCursor
DEALLOCATE TBLCursor
DROP TABLE #HGtmp
여기에 커서를 사용해서는 안됩니다. 그럴 필요가 전혀 없습니다. 모두 당신이하고있는 일은 임시 테이블에 데이터를 삽입하는 것입니다. 이것은 하나의 insert 문이어야합니다. 다른 20,000 개의 행을 포함 시키려면 테이블에 넣거나 (또는 select 문을 사용하는 것이 좋습니다) 조인하십시오. 이 모든 것은 루핑이없는 단일 insert 문이어야합니다. –