안녕하세요 형님들 질문이 하나만 드리겠습니다~
A 라는 테이블에 Seq 컬럼이 자동증가가 되어있습니다.
프로시저에서
DELCARE @iLoop INT = 0
WHILE @iLoop < 5
BEGIN
INSERT INTO A (C1,C2) VALUES('홍길동','서울')
SET @iLoop = @iLoop + 1
END
예를 들어 위같은 프로시저가 실행이된다고 치면
자동증가값을 모조리 다 가지고 올 수 있는 방법이 있나요?
1,2,3,4,5 이렇게 등록되어진 모든 seq 값을요
IDENT_CURRENT('A') , SCOPE_IDENTITY() , @@IDENTITY
같은 함수는 모두 맨 마지막 증가값만 불러오는데
중간에 임시테이블같은걸 만들어서 저장하는방법 밖에 없을까요?
Comment 4
-
루디먼트
2015.10.20 15:58
-
카르페디엠
2015.10.20 16:41
아..답변정말 감사드립니다~
혹시 변수로 담는 방법 말고는 없나봐요?
-
루디먼트
2015.10.20 17:45
2012 버전이라면 sequence를 활용할 수 있을테구요....
table result set으로 반환하려면, 아래처럼 해볼 수 있을 듯 합니다.
declare @identity int = 0
,@iLoop int = 0
select top 1 @identity = idx
from dbo.A
where c1 = N'홍길동' -- c1 컬럼이 unique 키라고 가정했습니다.
order by idx desc
WHILE @iLoop < 5
BEGIN
INSERT INTO A (C1,C2) VALUES('홍길동','서울')
SET @iLoop += 1
END
select idx
from dbo.A
where c1 = N'홍길동'
and idx > @identity
-
카르페디엠
2015.10.26 09:46
아 루디먼트님~~ 친절한 답변 정말 감사합니다~~
declare @iLoop INT = 0
,@identity varchar(100) = ''
WHILE @iLoop < 5
BEGIN
INSERT INTO A (C1,C2) VALUES('홍길동','서울')
set @identity += ','+ cast(scope_identity() as varchar(20))
SET @iLoop += 1
END
print stuff(@identity,1,1,'')