0
커서가 있습니다. @sql 쿼리의 결과로 열 테스트를 업데이트해야합니다. 하지만 그것은 각각의 열을 쿼리의 자체 결과로 업데이트하지 않습니다. 그럴 경우, 각 열에 대해 해당 쿼리를 실행하지 않아도됩니다.커서가 전체 테이블을 돌지 못합니다.
declare @promenjiva nvarchar(max)
declare @docidgodina nvarchar(max)
declare @sql nvarchar(max)
declare @var int
declare @var1 int
declare c1 cursor for
select documentid,a4 from damdocumenttype1 order by documentid--a inner join dbo.Delovodnik b on a.documentid=b.idinstance
begin
open c1;
fetch next from c1 into @var,@promenjiva
while @@fetch_status = 0
begin
set @promenjiva=REPLACE(@promenjiva,'C','')
SET @SQL = 'select stuff((
SELECT '', '' + a1
FROM DamDocumentType1
where documentid in (' + @promenjiva + ')
FOR XML path('''')
), 1, 2, '''')'
exec @docidgodina=sp_executesql @sql
update dbo.Delovodnik set [email protected]
fetch next from c1 into @var,@promenjiva
end
end
close c1
deallocate c1
난 당신이 UPDATE 문을 수행 할 때 당신이
왜 당신이 의도적으로 같은 값의 구분 된 목록을 작성? 단일 튜플에 값을 밀어 넣는 대신 정규화 된 구조를 사용해야합니다. 장기적으로 볼 때 상황이 더 어려워 질 것입니다. 데이터를 작성하기 위해 거쳐야하는 모든 작업은 쿼리 할 때마다 실행 취소해야합니다. –
이것은 단지 한 시간의 커서이며, 나의 첫 번째 curosor는 그들에 대해 많이 모른다. 그래서 나는 코드가 필요하다. 나는 당신이 읽고있는 것을 많이 읽고 이해한다 : D –
쉼표로 구분 된 목록을 열에 채운다. 테스트. 단일 셀 (DB 세계에서 튜플이라고 함)에서 값이 여러 개일 때 1NF를 위반합니다. –