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