【问题标题】:‘Null or empty full-text predicate’ when executing a store procedure from a bound control从绑定控件执行存储过程时的“空全文谓词”
【发布时间】:2011-04-12 18:10:13
【问题描述】:

我的 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)

我的问题是,如果文本框为空,我会得到以下异常:'Null or empty full-text predicate'。

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

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

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

【问题讨论】:

标签: asp.net sql-server


【解决方案1】:

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

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

【讨论】:

  • 这不会给你正确的查询结果。它将与该列中的 '""' 进行比较,而不是空字符串,并且不会忽略该条件。
猜你喜欢
  • 2019-04-20
  • 1970-01-01
  • 2010-09-16
  • 2012-10-10
  • 2016-12-03
  • 1970-01-01
  • 1970-01-01
  • 2011-11-07
  • 2021-06-11
相关资源
最近更新 更多