【发布时间】:2010-09-07 18:42:58
【问题描述】:
是否有一种优雅的方式来处理将 id 列表作为参数传递给存储过程?
例如,我希望我的存储过程返回部门 1、2、5、7、20。过去,我传入了一个以逗号分隔的 id 列表,就像下面的代码一样,但这样做真的很脏。
我认为 SQL Server 2005 是我唯一适用的限制。
create procedure getDepartments
@DepartmentIds varchar(max)
as
declare @Sql varchar(max)
select @Sql = 'select [Name] from Department where DepartmentId in (' + @DepartmentIds + ')'
exec(@Sql)
【问题讨论】:
-
Here 是我刚刚找到的 XML 方法的变体。
-
如果您使用的是 SQL Server 2008,则可以使用表值参数。 http://www.sqlteam.com/article/sql-server-2008-table-valued-parameters
标签: sql-server tsql stored-procedures