의견에서 제안한대로 요소 사이에 쉼표를 넣는 것은 마지막이 아닌 첫 번째 행에 대해 특별한 작업을 수행함으로써 훨씬 쉽게 실현됩니다.
SET @first = 1
WHILE @@FETCH_STATUS=0
BEGIN
IF @first = 1
SET @first = 0
ELSE
SET @value = @value + ','
SET @value = @value + @newelement
...
END
또 다른 변화를 : 1, 2
오히려
WHILE @@FETCH_STATUS=0
BEGIN
SET @value = @value + @newelement + ','
...
END
그리고 특별히 마지막 행을 처리하는 방법을 해결하려고 노력보다, 그것을 할 훨씬 쉽게 , 만약 당신이 정말로 마지막 행을 위해 뭔가를해야 할 중간 변수와 비표준 커서를 사용하는 것입니다 루프 :
declare boris cursor for select top 10 name from sys.objects order by name
declare @name sysname
declare @nametemp sysname
open boris
fetch next from boris into @nametemp
while @@FETCH_STATUS=0
BEGIN
set @name = @nametemp --Use SELECT if multiple variables to be assigned
fetch next from boris into @nametemp
if @@FETCH_STATUS!=0
begin
print 'and finally'
end
print @name
END
close boris
deallocate boris
인쇄는 (나를 위해, 거의 빈 DB에) 어느 :
EventNotificationErrorsQueue
filestream_tombstone_2073058421
filetable_updates_2105058535
IsIt
QueryNotificationErrorsQueue
queue_messages_1977058079
queue_messages_2009058193
queue_messages_2041058307
ServiceBrokerQueue
and finally
sysallocunits
하지만 난 강력하게 대신 변화의 첫 번째 유형을 권 해드립니다.
1이 어느 단지 T-SQL의 일이 아니다. 당신이 커서가되는 대한 일반적인 경고를
2 "를 다르게 첫 번째 반복 치료"로 "다른 마지막 반복 치료"에서 문제를 변화 그리고, 물론, 삽입 할 수있는 경우 대부분의 프로그래밍 언어에서는 일반적으로 훨씬 쉽게 SQL의 최후의 수단으로, 부적절한 것으로 판명 될 때까지 또는 그 때까지 세트 기반 접근법을 사용하십시오.
이 정보는 무엇에 사용됩니까? 마지막 문제보다는 * 처음 * 행에 특별한 것을하도록 문제를 변형시킬 수 있습니까? (고전적인 예 - 요소 사이에 쉼표 추가하기. 마지막 행을 제외하고 모두에 쉼표를 추가하는 대신 쉼표를 앞에두고 쉼표를 붙이도록 논리를 변경하십시오.) –
@Damien_The_Unbeliever 편집 내용을 참조하십시오. – dllhell