首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在@ table变量中返回1个以上的值

在@ table变量中返回1个以上的值
EN

Stack Overflow用户
提问于 2011-08-12 01:51:07
回答 1查看 443关注 0票数 0
代码语言:javascript
运行
复制
ALTER FUNCTION [dbo].[fn_DivisonCode] (@PeopleID int)
RETURNS @temptable TABLE (Code varchar(100), ID varchar(100))
AS
begin

DECLARE @stDeptCode VARCHAR(100)
DECLARE @peopleID VARCHAR(100)

SELECT 
      @stDeptCode = (COALESCE(@stDeptCode + ',', '') + CAST(PPL.DeptCode AS VARCHAR(5))),
      @peopleID = peopleID
FROM dbo.PPL
WHERE PeopleID = peopleID 

INSERT INTO @temptable(Code, ID) 
  VALUES(@stDeptCode, @peopleID)

return
end

SELECT [dbo].[fn_DivisonCode](23415)

当我调用这个函数时,它应该返回2个值,但在这里它只返回@stDeptCod值,而不返回@peopleID。这里有什么我遗漏的东西吗?

谢谢

EN

回答 1

Stack Overflow用户

发布于 2011-08-12 02:06:21

您正在将值选择到变量中。一个变量一次只能保存一个值,因此当您运行select语句时,它可能会从表中选择一个、两个或100个值,但在语句完成后,只有最后一个值存储在变量中。相反,应该将select和insert语句组合在一起,如下所示:

代码语言:javascript
运行
复制
insert into @temptable(Code,ID)
  SELECT (COALESCE(@stDeptCode + ',', '')  +  CAST(PPL.DeptCode AS VARCHAR(5))), peopleID
    FROM dbo.PPL  
    WHERE @PeopleID = peopleID   
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7030529

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档