kac*_*apy 4 sql-server-2005 stored-procedures
我有一个执行简单更新的存储过程(见下文)。
我只想更新传递的字段,而不是那些为空的字段。也就是说,如果我没有得到某个参数的参数值,我不想将表数据更新为 null,而是保留当前值。
这可以在这样的 sql 更新语句中完成吗?
ALTER PROCEDURE [dbo].[upd_MessageDetail]
@MessageId INT,
@IsDraft INT,
@IsPreviewed INT,
@IsRead INT,
@IsFlagged INT,
@IsDeleted INT,
@IsArchived INT
AS
BEGIN
UPDATE MessageDetail
SET
IsDraft = @IsDraft,
IsPreviewed = @IsPreviewed,
IsRead = @IsRead,
IsFlagged = @IsFlagged,
IsDeleted = @IsDeleted,
IsArchived = @IsArchived
WHERE MessageId = @MessageId
Run Code Online (Sandbox Code Playgroud)
San*_*ddy 10
如果我理解正确的话,如下所示。
UPDATE MessageDetail
SET
IsDraft = ISNULL (@IsDraft, IsDraft),
IsPreviewed = ISNULL (@IsPreviewed, IsPreviewed),
IsRead = ISNULL (@IsRead, IsRead),
IsFlagged = ISNULL (@IsFlagged, IsFlagged),
IsDeleted = ISNULL(@IsDeleted, IsDeleted)
IsArchived = ISNULL(@IsArchived, IsArchived)
WHERE MessageId = @MessageId
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2320 次 |
| 最近记录: |