【问题标题】:Function returning data to client error函数向客户端返回数据错误
【发布时间】:2016-02-27 04:06:38
【问题描述】:

在 SQL Server(我相信是 2008 年)中,我正在尝试创建一个函数,该函数通过分隔符拆分字符串,然后检查传入的值是否等于从查询中找到的值。如果是,则函数返回真(一旦找到),否则返回假。

由于某种原因,我收到以下似乎没有意义的错误。我这么想的原因是我觉得应该有一种解决这个问题的方法。我对 SQL Server 语法相对较新,因此不胜感激。这是它指向的错误和代码...

函数中包含的 Select 语句不能将数据返回给客户端。

--Inside Function
 SELECT id FROM a_table WHERE name=(SUBSTRING(@configValue, @start, @end - @start))
    IF @@ROWCOUNT > 0
        RETURN 1;

【问题讨论】:

    标签: sql-server


    【解决方案1】:

    错误是因为您选择了 id。

    你只需要检查它是否存在。

    例如,你不需要选择id,你可以选择1...存在检查没有区别。

    IF EXISTS (SELECT 1 FROM a_table WHERE name=(SUBSTRING(@configValue, @start, @end - @start)))
        RETURN 1
    ELSE
        RETURN 0
    

    【讨论】:

      【解决方案2】:

      松散的选择返回一个结果集,你不能从函数中返回它,只能从存储过程中返回。

      重写以从该结果集中选择计数并以这种方式与 0 进行比较。

      IF 0<(SELECT COUNT(*) FROM a_table WHERE name=(SUBSTRING(@configValue, @start, @end - @start)))
          RETURN 1;
      

      【讨论】:

      • 完美,不敢相信我没想到。
      • @Sh4d0wsPlyr 我反应很快,JiggsJedi 的查询好一点,EXISTS 返回更快。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-11-22
      • 1970-01-01
      • 1970-01-01
      • 2012-03-10
      • 1970-01-01
      相关资源
      最近更新 更多