2010-09-30 11 views
5

değerlerinde ayarlanmış değerler Parametrelerin sağlanıp sağlanmadığına bağlı olarak bir tablo satırındaki değerleri güncelleyecek bir saklı yordamı kullanmak istiyorum. Örneğin, tüm değerleri güncellemek istediğim bir durumum var, aynı zamanda iki değeri güncellemem gereken bir durum var. Bunu, özellikle de bana hitap etmeyen, iki tane yazmaktan ziyade, tek bir prosedürle yapabilmeyi umuyordum.Koşullu olarak UPDATE ifadesi

CREATE PROCEDURE dbo.UpdatePerson 
@PersonId INT, 
@Firstname VARCHAR(50) = NULL, 
@Lastname VARCHAR(50) = NULL, 
@Email VARCHAR(50) = NULL 
AS 
BEGIN 
    SET NOCOUNT ON 

UPDATE Person 
Set 
    Firstname = COALESCE(@Firstname, Firstname), 
    Lastname = COALESCE(@LastName, Lastname), 
    Email = COALESCE(@Email, Email) 
    WHERE PersonId = @PersonId 

END 

Ben değerleri ideal değildir ki, zaten her zaman güncellenecektir fark: Kendimle gelip başarmış en iyi aşağıdaki gibi bir şeydir. Bunu başarmanın etkili bir yolu mu yoksa daha iyi bir yol olabilir mi?

cevap

4

Kodunuzun iyi olduğunu düşünüyorum. Ekleyebildiğim tek şey, her üç paramın NULL olduğu durum için bir kontrol olup, bu durumda hiçbir güncelleme yapılmamalıdır.

4

SQL Server'ın, güncel olmayan güncelleştirmelerle başa çıkmak için bazı mantığı vardır.

More details than you probably wanted to know!

+0

İlginç yazı! – RedFilter

+0

+1 Yararlı ve bilgilendirici yazı. Paylaşım için teşekkürler! –

+1

Teşekkürler Martin. Bilinmesi gereken bazı yararlı bilgiler. –