我遇到了为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 '('.
我对此很陌生,我不明白为什么这是一个问题。
任何帮助都会得到很好的回复。
感谢。
答案 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传递给它。