0

私はこのシナリオを持っています----ストアドプロシージャにオプションでパラメータ値を与えることができます。値が空/デフォルトの場合、既存の値を保持したいと思います。

以下のCASE文での扱い方は正しいでしょうか?これは私にとってはうまくいきますが、これを行うためのより良い方法はありますか?

CREATE  PROCEDURE [UpdateUser]        
(      
 @UserID int, 
 @UserKey VARCHAR(32),     
 @UserName varchar(50),      
 @CategoryID INT = 0,  

)        
AS        
BEGIN      

 SET NOCOUNT ON      

 UPDATE [Users]      
 SET 
   [UserKey] =  (CASE WHEN (LEN(RTRIM(LTRIM(@UserKey)))>0) THEN @UserKey ELSE UserKey END )  
  ,[UserName] = (CASE WHEN (LEN(RTRIM(LTRIM(@UserName)))>0) THEN @UserName ELSE UserName END )       
  ,[CategoryID] = (CASE WHEN (@CategoryID>0) THEN @CategoryID ELSE CategoryID END )    

 WHERE         
  [UserID] = @UserID      

END
4

1 に答える 1