从存储过程中的sql函数保存结果

时间:2009-06-04 07:23:37

标签: sql-server tsql stored-procedures

我遇到了为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 '('.

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

任何帮助都会得到很好的回复。

感谢。

4 个答案:

答案 0 :(得分:2)

我认为从表值函数中选择时,你错过了一个FROM关键字。

试试这个:

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

答案 1 :(得分:0)

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

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

答案 2 :(得分:0)

当然,只有当你的函数不能返回多行时,这段代码才有效。

答案 3 :(得分:0)

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