所以我有这个查询表并返回结果集的存储过程,但我使用该结果集作为我在商店过程中执行的存储过程的参数。
SELECT employeeID FROM employeeList where LastName = 'Zhou'
..... Some stuff .....
exec my_store_proc @employeeID = 'a comma separated string of employee ID'
my_store_proc
有一个参数@employeeID AS VARCHAR(8000) = '',
。我知道我可以使用游标遍历结果集并将它们连接成逗号分隔的字符串。但我想知道单独从select语句返回的结果集是什么,它是否有数据类型?我希望答案是逗号分隔的字符串,这样我就可以设置{{ 1}}。但我的直觉却说没有。
答案 0 :(得分: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