从绑定控件执行存储过程时的“空或全文谓词”

时间:2010-09-15 15:19:36

标签: asp.net sql-server

我的ASP.Net应用程序中有一个页面,用于通过存储过程搜索数据库。传递给存储生成的参数之一通过ControlParameter绑定绑定到文本框。

<asp:ControlParameter Name="EventDescription" Type="String" ControlID="ucTestLogSearch" PropertyName="EventDescription" />

将文本传递给SQL Server存储过程。 存储过程定义如下参数:

@event_descrip VARCHAR(200) = NULL,

它使用WHERE条件中的参数,如下所示:

(CONTAINS (le.event_descrip, @event_descrip) OR @event_descrip IS NULL)

我的问题是,如果文本框为空,我会收到以下异常:'空或空全文谓词'

根据我的经验,在WHERE子句中检查null应足以防止此错误。

此外,我在测试数据库服务器上运行时遇到异常,但对我的开发服务器没有。据我所知,服务器正在运行相同版本的SQL Server。唯一的区别是测试服务器是集群的,而开发服务器则不是。

任何人都可以解释为什么我会收到此错误,为什么它发生在一台服务器而不是另一台服务器上,或者我如何解决它?

1 个答案:

答案 0 :(得分:3)

在选择查询之前声明以下语句:

IF ISNULL(@event_descrip,'') = '' SET @event_descrip = '""';