Dis*_*oat 23 sql-server stored-procedures
我有一个像这样的SP(使用SQL Server):
ALTER PROCEDURE [dbo].[sp_ClientNotes_update]
@id uniqueidentifier,
@ordering smallint = NULL,
@title nvarchar(20) = NULL,
@content text = NULL
AS
BEGIN
SET NOCOUNT ON;
UPDATE tbl_ClientNotes
SET ordering=@ordering, title=@title, content=@content
WHERE id=@id
END
Run Code Online (Sandbox Code Playgroud)
我想只在它们被传递到SP时设置值,即不是NULL.可以这样做吗?
这个问题似乎表明唯一的方法是使用完全独立的条件查询,但对于3个可选参数,这显然是一场噩梦!
Chr*_*ver 41
试试这个.
ALTER PROCEDURE [dbo].[sp_ClientNotes_update]
@id uniqueidentifier,
@ordering smallint = NULL,
@title nvarchar(20) = NULL,
@content text = NULL
AS
BEGIN
SET NOCOUNT ON;
UPDATE tbl_ClientNotes
SET ordering=ISNULL(@ordering,ordering),
title=ISNULL(@title,title),
content=ISNULL(@content, content)
WHERE id=@id
END
Run Code Online (Sandbox Code Playgroud)
WHERE如果你使用事务复制,它也可能值得为该子句添加一个额外的部分,那么如果所有都是NULL,它将向订阅者发送另一个更新,以防止这种情况发生.
WHERE id=@id AND (@ordering IS NOT NULL OR
@title IS NOT NULL OR
@content IS NOT NULL)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
110965 次 |
| 最近记录: |