代码之家  ›  专栏  ›  技术社区  ›  Dan Andreatta

从绑定控件执行存储过程时,全文谓词为Null或为空

  •  3
  • Dan Andreatta  · 技术社区  · 14 年前

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

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

    文本被传递到SQLServer存储过程。 存储过程定义如下参数:

    @event_descrip VARCHAR(200) = NULL,
    

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

    我的问题是,如果文本框为空,则会出现以下异常: 空的全文谓词

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

    另外,当我在testdb服务器上运行而不是在开发服务器上运行时,我会得到异常。据我所知,服务器运行的是同一版本的SQL server。唯一的区别是测试服务器是集群的,而开发服务器不是集群的。

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

    1 回复  |  直到 14 年前
        1
  •  3
  •   Cosmin    13 年前

    声明以下查询前的语句:

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