2013-07-30 6 views
3

I create tableprocédure stockée avec filtre

CREATE TABLE tbl 
(
ID int, 
FirstName nvarchar(50), 
LastName nvarchar(50) 
) 

Avez procédure stockée où

UPDATE tbl 
SET FistName = @firstName , LastName = @lastName 
WHERE ID = @ID 

Maintenant, quand je l'appelle ma procédure stockée exec myProc 1,'John','' veulent mettre à jour uniquement les colonnes que je vous écris. Par exemple, si j'ai dans mes valeurs de la table:

ID : 1 
FirstName: Bob 
LastName : Brown 

après exec il doit être

ID : 1 
FirstName: John 
LastName : Brown 

Répondre

7

Essayez ceci:

UPDATE tbl 
SET FirstName = 
case 
    when @firstName is null or @firstName = '' then firstName 
    else @firstName 
end, 
LastName = 
case 
    when @lastName is null or @lastName = '' then lastName 
    else @lastName 
end 
WHERE ID = @ID 

est généralement correct gérer la valeur NULL et la valeur de chaîne vide

+0

je vous remercie pour l'aide, mais si je veux mettre à jour de nombreuses valeurs est de toute façon le faire sans cas? – GeoVIP

+0

L'instruction case gère la valeur d'entrée et non le nombre de lignes. Le nombre de lignes a été géré par @id dans yuor où condition;) –