首页 新闻 搜索 专区 学院

[求助] 程序生成的 IS Null 出错

0
[已关闭问题] 关闭于 2014-10-18 20:17

我遇到了一个异常,

输出的T-SQL代码:

exec sp_executesql N'DELETE [UnitTest].[Persistent.ValueObject] WHERE [Id] = @Id AND (([Message] IS @Message_0 AND [Date] IS @Date_0) OR ([Message] IS @Message_1 AND [Date] IS @Date_1));',N'@Id uniqueidentifier,@Message_0 nvarchar(4000),@Date_0 nvarchar(4000),@Message_1 nvarchar(4000),@Date_1 nvarchar(4000)',@Id='0DB4C4AB-47C4-4BA2-BC88-89BCEF04E714',@Message_0=NULL,@Date_0=NULL,@Message_1=NULL,@Date_1=NULL

如果参数有值自然会用 "="  如 [Id] = @Id, 如果,参数是一个 Null, 这样就会用 Is 如:[Message] IS @Message 可是,出错了.....

 

求助啊

Srouni的主页 Srouni | 初学一级 | 园豆:9
提问于:2014-10-17 16:26
< >
分享
所有回答(2)
0

你把NULL转化为空字符串,统一用=号

1、 select null,查出一个null

2、select ISNULL(null,''),你会发现null被转为''空字符串了

chengeng | 园豆:292 (菜鸟二级) | 2014-10-18 10:55
0

在传参数的时候加个非空判断就可以了(意思是可能出现null的地方加)

IT_小子 | 园豆:17 (初学一级) | 2014-10-18 20:02
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册