变量没有正确累积SQL Server

时间:2014-03-30 20:12:16

标签: sql sql-server function variables accumulator

我希望你能帮助我解决这个问题,我总是在这个网站上得到很好的答案,所以这次我带来了一个奇怪的东西,我在SQL脚本上找到了,我将解释: 我打算从查询中累积一个列的整个valor,当我单独运行脚本时它工作正常,但每当我尝试在函数或存储过程中使用相同的脚本时,我的变量获得最后一个的valor记录。 这是我的剧本:

DECLARE @loSetTable TABLE (members VARCHAR(MAX), sorter INT) 
declare @lsEnlarge varchar(max)
set @lsEnlarge=''
SELECT @lsEnlarge=@lsEnlarge +'[menu_item].[h].&[' + rtrim(item_id) + '],' 
FROM cat_objective_item m1 
INNER JOIN cat_menu_item m2 ON (m1.item_id = m2.menu_item_id     AND m2.db_id = 2) 
WHERE objective_id IN (6) 
ORDER BY objective_id,item_id
set @lsEnlarge = substring(@lsEnlarge,1,len(@lsEnlarge)-1)
INSERT INTO @loSetTable VALUES ('SET itemgroup1 AS ''' +  @lsEnlarge  + ' ''  ' ,1)
SELECT * FROM @loSetTable

输出很好:

SET itemgroup1 AS '[menu_item].[h].&[013388],[menu_item].[h].&[015783],[menu_item].[h].&[016049],[menu_item].[h].&[016097],[menu_item].[h].&[016464],[menu_item].[h].&[017802],[menu_item].[h].&[018255],[menu_item].[h].&[018282],[menu_item].[h].&[10150],[menu_item].[h].&[10151] '

但是当我把SAME脚本放在一个函数中时:

ALTER FUNCTION [dbo].[mk_mmx_fn_get_kfc_mdx_members] ()            
RETURNS @loSetTable TABLE (members VARCHAR(MAX), sorter INT)            
AS
BEGIN
DECLARE @lsEnlarge AS    VARCHAR(MAX)
SET @lsEnlarge=''

--First group of items
SELECT @lsEnlarge=@lsEnlarge +'[menu_item].[h].&[' + rtrim(item_id) + '],' 
FROM cat_objective_item m1 
INNER JOINcat_menu_item m2 ON (m1.item_id = m2.menu_item_id AND m2.db_id = 2) 
WHERE objective_id IN (6) 
ORDER BY objective_id,item_id
set @lsEnlarge = substring(@lsEnlarge,1,len(@lsEnlarge)-1)
INSERT INTO @loSetTable VALUES ('SET itemgroup1 AS ''' +  @lsEnlarge  + '''' ,1)
RETURN
END

我得到了这个:

SET itemgroup1 AS '[menu_item].[h].&[10151]'

正如你所看到的,我只得到最后一项(在最后一行)我尝试使用商店程序,结果是一样的,你知道为什么会这样吗? 谢谢!

0 个答案:

没有答案