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
私はあなたの更新ステートメントを実行すると、あなたが
なぜあなたは意図的にこのような値の区切りのリストを作成していますか?単一のタプルに値を重畳するのではなく、正規化された構造を使用する必要があります。それは長期的にあなたのために物事をより困難にします。データを作成するために必要なすべての操作を、クエリを実行するたびに取り消す必要があります。 –
これはちょうど1時間のカーソルであり、私の最初のcurosorはそれらについてたくさん知っているわけではないので、コードが必要です。コメントを読むことで多くのことを理解できます:D –
あなたは何をしていますか?テスト。これは、1つのセル(DB世界のタプルと呼ばれます)に複数の値がある場合、1NFに違反します。 –