Değişken güncelleştirme deyimini oluşturmak için bunu dinamik sql kullanmadan gerçekleştirebileceksiniz. Eğer sonuçlarını yüklemek gerekir .... Burada bir döngü önlemek eğer
select name from syscolumns
where [id] = (select [id] from sysobjects where name = 'tablename')
emin değil:
Bu ifade size koymak tablo adına göre sütunların listesini döndürür bir imleç içine yukarıda ve daha sonra bir sorgu oluşturun. Psuedo kodlanmış:
sorgu döngü içinde inşa ediliyor yapılır
set @query = 'update [1607348182] set '
load cursor --(we will use @name to hold the column name)
while stillrecordsincursor
set @query = @query + @name + ' = tmp_[1607348182]. ' [email protected] + ','
load next value from cursor
loop!
, exec Sp_executesql @query kullanın.
Sadece küçük bir uyarı ... Bu gibi bir döngüde dinamik sql oluşturmak biraz kafa karıştırıcı olabilir. Sorunlu çekim yapmak için, döngüde select @query ifadesini koyarak @query'nin oluşturulmasını izleyin.
düzenleme: Aynı anda tüm 1000 satırı tek bir güncelleştirmede yapabileceğinizden emin değilsiniz ... @query'nin de büyüyebileceği boyutta mantıksal sınırlar var (varchar (8000)?). Kodu, bir seferde 50 sütun tutacak şekilde bölmeniz gerekebilir. Syscolumns select ifadesinden sütunları bir id ile temp tablosuna yerleştirin ve dinamik sql'nizi oluşturun, böylece aynı anda 20 sütun (veya 50?) Güncelleştirin. Bunun bir başka alternatifi de, bunu kütle haline getirmek için excel kullanmak olacaktır. Sütunu seçip sonuçları bir e-tablonun sütununa kopyalayın. Koymak '= sütun b, tmp. [12331312] c sütununda, sütun A'yı sütun D'ye ve sütun e'ye virgül koyun. Tüm elektronik tabloyu bir not defterine kopyalayın ve sizin için oluşturulmuş güncelleme ifadesinin sütunlarına sahip olmalısınız. Bu bir tek atış olayıysa kötü bir çözüm değil, devam eden bir çözüm olarak buna güvenmeme gerek yok.
Bunu yapmak zorunda kalmamak için 'TRIGGER' kullanmanızı veya şemanızı değiştirmenizi öneririm. –
Anlamadım. İlk güncellemeden sonra iki tablo aynı satırlar içerecektir, bu yüzden ikinci güncellemenin ne yapacağını umuyorsunuz? – PaulG
Travis G, db şemasını değiştirmeyi kabul ediyorum ama maalesef projemde bu şemayı takip etmeliyim. – amuliar