接受多个ID值的t-sql存储过程是否有一种处理将ID列表作为参数传递给存储过程的优雅方法?例如,我希望存储过程返回部门1、2、5、7、20。在过去,我传递了一个逗号分隔的ID列表,就像下面的代码一样,但是我觉得这样做很脏。SQLServer 2005是我认为唯一适用的限制。create procedure getDepartments @DepartmentIds varchar(max)as
declare @Sql varchar(max)
select @Sql = 'select [Name] from Department where DepartmentId in (' + @DepartmentIds + ')'
exec(@Sql)
3 回答
拉丁的传说
TA贡献1789条经验 获得超8个赞
declare @xmlstring as varchar(100) set @xmlstring = '<args><arg value="42" /><arg2>-1</arg2></args>' declare @docid int exec sp_xml_preparedocument @docid output, @xmlstringselect [id],parentid,nodetype,localname,[text]from openxml(@docid, '/args', 1)
id parentid nodetype localname text
0 NULL 1 args NULL
2 0 1 arg NULL
3 2 2 value NULL
5 3 3 #text 42
4 0 1 arg2 NULL
6 4 3 #text -1
添加回答
举报
0/150
提交
取消