【问题标题】:saving a result from a tsql function in a stored procedure将 tsql 函数的结果保存在存储过程中
【发布时间】:2009-06-04 07:23:36
【问题描述】:

我为 SQL Server 编写的存储过程遇到问题。

我在存储过程中调用一个函数,该函数返回一个带有值的 2 列表。我想将此值分配给一个 VARCHAR 变量,以便在我的存储过程的其余部分中使用。

DECLARE @TEAM VARCHAR(100)
SET @TEAM = (SELECT DISTINCT value fn_split(@foldernarrative, '-') WHERE idx = 0)

该函数独立运行,但添加到我的存储过程时出现语法错误,例如

Server: Msg 170, Level 15, State 1, Line 94
Line 94: Incorrect syntax near '('.

我对此很陌生,我不明白为什么这是一个问题。

我们将不胜感激。

谢谢。

【问题讨论】:

    标签: sql-server tsql stored-procedures


    【解决方案1】:

    我认为您在从表值函数中选择时缺少 FROM 关键字。

    试试这个:

    DECLARE @TEAM VARCHAR(100)
    SET @TEAM = (SELECT DISTINCT value FROM fn_split(@foldernarrative, '-') WHERE idx = 0)
    

    【讨论】:

    • 这发生在我们所有人身上!是时候再来一杯咖啡了:-)
    【解决方案2】:

    正如 dariom 所指出的,但如果 fn_split 是一个函数,您还需要添加对象所有者。

    DECLARE @TEAM VARCHAR(100)
    SET @TEAM = (SELECT DISTINCT value FROM dbo.fn_split(@foldernarrative, '-') WHERE idx = 0)
    

    【讨论】:

      【解决方案3】:

      当然,此代码仅在您的函数不能返回多于一行的情况下才有效。

      【讨论】:

        【解决方案4】:

        您可以在 @foldernarrative 周围添加一个 IsNull,以防您有意或无意地将 NULL 传递给它。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2011-06-03
          • 2010-10-24
          • 1970-01-01
          • 2014-08-02
          • 1970-01-01
          • 2011-03-03
          • 1970-01-01
          相关资源
          最近更新 更多