2009-06-04 86 views
1

我遇到了我正在为SQL Server编写的存储过程的问题。在存储过程中保存tsql函数的结果

我在存储过程中调用一个函数,该函数返回一个带有值的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 '('. 

我是很新的这一点,我不明白为什么这是一个问题。

任何帮助将被很好地接收。

谢谢。

回答

2

我觉得你从表值函数中选择时缺少一个FROM关键字。

试试这个:

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

哦......这是那些早晨的其中之一... – 2009-06-04 07:29:52

0

由于dariom指出,但你也将需要添加对象所有者如果fn_split是一个函数。

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

当然,如果你的函数不能返回多于一行,这段代码才会起作用。

0

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