2013-05-05 114 views
1

我有这个存储再修改不更新空输入变量

ALTER PROCEDURE dbo.News_Edite 
(
    @Id bigint, 
    @Title nvarchar(MAX), 
    @Lile nvarchar(MAX), 
    @Body nvarchar(MAX), 
    @Type nvarchar(20), 
    @Imgurl nvarchar(MAX), 
    @Date nvarchar(50) 
) 
AS 
update tbl_news 
set 
[email protected], 
[email protected], 
[email protected], 
[email protected], 
[email protected], 
[email protected] 
where [email protected] 
RETURN 

,但我想不更新ne_imgurl如果@Imgurl是空

什么是包含在的输入参数的最佳方式设置子句,但如果它为空则排除它?

回答

2

您可以使用的isNull,但我不知道你想在

例如取代它什么:

ne_imgurl=isNull(@Imgurl, ''), 
+0

我想ne_imgurl – 2013-05-05 06:25:59

+0

所以,你需要做的仅仅是用这种方式替代:ne_imgurl = ISNULL(@Imgurl,ne_imgurl) – 2013-05-05 07:21:32

2

使用函数ISNULL,然后传递原始值作为第二个参数。 ISNULL所做的是返回第一个参数,除非第一个参数为null,然后它将返回第二个参数。

ALTER PROCEDURE dbo.News_Edite 
(
    @Id bigint, 
    @Title nvarchar(MAX), 
    @Lile nvarchar(MAX), 
    @Body nvarchar(MAX), 
    @Type nvarchar(20), 
    @Imgurl nvarchar(MAX), 
    @Date nvarchar(50) 
) 
AS 
update tbl_news 
set 
[email protected], 
[email protected], 
[email protected], 
[email protected], 
ne_imgurl=ISNULL(@Imgurl, ne_imgurl), 
[email protected] 
where [email protected] 
RETURN