2013-12-23 115 views
0

所以我有这个存储过程查询一个表并返回一个结果集,但我使用该结果集作为我在存储过程中执行的存储过程的参数。返回的结果集是什么?

SELECT employeeID FROM employeeList where LastName = 'Zhou' 
..... Some stuff ..... 
exec my_store_proc @employeeID = 'a comma separated string of employee ID' 

my_store_proc有PARAM @employeeID AS VARCHAR(8000) = '',。我知道我可以使用游标来遍历结果集,并将它们连接成逗号分隔的字符串。但我想知道单从select语句返回的结果集是什么,它有一个数据类型?我希望答案是一个逗号分隔的字符串,以便我可以设置employeeID = employeeID。但我的直觉认为不。

+0

什么的'exec'或过甜的,非规范化的联接有问题和/或选择的结果呢? “employeeID”的类型是“employeeID”列的类型。这是SELECT所具有的[唯一]输入信息,这就是为什么我问为什么其他信息应该是相关的。 – user2864740

+0

您是否在谈论[Table-Valued parameters](http://technet.microsoft.com/zh-cn/library/bb510489.aspx)? – valverij

+0

所有用逗号分隔的字符串是什么? – Zane

回答

3

因为它是你的SELECT产生一个结果集,这是一个技术上的表。但可以收集该SELECT到逗号的结果分离的Varchar:

DECLARE @sResult VARCHAR(8000) 
SET @sResult = '' 

SELECT @sResult = @sResult + ',' + CAST(employeeID as varchar(10)) 
FROM employeeList where LastName = 'Zhou' 

SET @sResult = STUFF(@sResult,1,1,'') 

基本上声明然后一个varchar变量使用SELECT的一种形式,收集的值成一个字符串(假定EMPLOYEEID因此是一个INT CAST)

最后一行删除前导逗号。

那之后,你可以拨打电话

exec my_store_proc @employeeID = @sResult 
+0

不错,我不知道你能做到这一点。结果集是一张表格。得到它了 :) –

相关问题