SET

2016-04-13 25 views
1

çalışmıyor Bu sorgu olanSET

DECLARE @tempvarA INT = 0 
UPDATE Table1 SET @tempvarA = 1 + intColumn, columnA = @tempvarA 

* intColumn başarıyla sorgu ancak @tempvarA ilk ilan edilmiş olup, burada kolumna değeri 0 yürütür Tablo1 bir sütundur. Burada bir şey eksik miyim veya @tempvarA değeri sadece güncelleme bildiriminin yürütülmesinden sonra güncellenir mi?

DECLARE @tempvarA INT = 0 
UPDATE Table1 SET @tempvarA = 1 + intColumn 
UPDATE Table1 SET columnA = @tempvarA 

O inşaat ama nedense bunu yapmak için daha uygun bir yolu var olması gerektiğini düşünüyorum:

Aşağıdaki çalıştılar.

+0

Bir değişkenin değerini değiştirmek için bir 'UPDATE 'vermek zorunda değilsiniz. Sadece basitçe 'SET @tempvarA = 1' kullanın. –

+0

Kullandığınız sql sunucusunun hangi sürümü? – Sankar

+0

SQL Server 2000'de güzel çalışıyor. – Sankar

cevap

4

Sorunuzu doğru bir şekilde anlıyorsam, önce bir değişken bildirmek ve bir değerle ayarlamak ve sonra bu değişkenin bulunduğu bir sütunun değerini güncellemek istersiniz.

1) bildirilmesi değişken:

DECLARE @tempvarA INT; 

2) değişken Ayar: en Adım adım atalım

SET @tempvarA = 1; 

3) ile tablo güncellenmesi söz konusu değişken:

UPDATE Table1 SET columnA = @tempvar1; 

Sadece dikkatli ol. Yukarıdakiler columnA'un TÜM değerlerini tempvarA'unkiyle güncelleyecektir. Belirli satırlar istiyorsanız, UPDATE ifadenizde bir where cümlesi eklemeniz gerekecektir.

+0

Merhaba! Evet, cevabınız açık! ama adım 2) yapamam çünkü tempvarA için hesaplamalarımın bir parçası olarak Tablo1'de bir sütuna ihtiyacım var. Set tempvarA = 1 + Table1.intColumn gibi bir şey. UPDATE ifadesinin içine tempvarA = 1 + Table1.intColumn yerleştirilmesi işe yaramıyor gibi görünüyor – user3770093

+0

Teşekkür ederim şimdi çalışıyor! – user3770093

+0

Lütfen bunu doğru cevap olarak kabul edebilir misiniz? Çok teşekkürler! –

1

DECLARE @tempvarA INT = 0 
UPDATE Table1 SET @tempvarA = 1, columnA = @tempvarA 

For You Bu benim için iyi çalışır

DECLARE @tempvarA INT = 0 
UPDATE t SET @tempvarA = 1, t.columnA = @tempvarA from My_Table_Name t 

deneyebilirsiniz.

+0

Hey Teşekkürler! Çalışıyor, bu sebepten başka bir şeyden geldiğini öğrendim ki bu benim durumumun düzgün bir şekilde tempvarA'ya dönmemesidir. – user3770093

+0

Şimdi size çok teşekkür ederim! – user3770093