在下面的查询中,我希望使IN中的值是动态的。
SELECT DISTINCT party_id
INTO #tmp_new_part
FROM #party_approval
WHERE party_approval_type_id in (5,6,8)发布于 2013-10-28 06:18:03
这取决于您想要进入in列表中的值是来自现有表还是来自SQL参数。如果它们来自现有的表或查询,您可以这样做:
SELECT DISTINCT party_id
INTO #tmp_new_part
FROM #party_approval
WHERE party_approval_type_id in (select party_approval_type_id from some_table)如果希望它基于存储过程的参数,可以传递包含分隔值列表的varchar,并使用现有的UDF之一将其拆分为表变量,如下所示:
SELECT DISTINCT party_id
INTO #tmp_new_part
FROM #party_approval
WHERE party_approval_type_id in (select * from dbo.CsvToInt(@values))发布于 2013-10-28 08:35:13
可以使用XML文档作为参数。这是一个技巧,当一个人需要传递一个不同的值数组到一个存储过程。来自堆栈溢出的一个例子很好地说明了这种技术:
declare @xmlDoc XML
set @xmlDoc = '
<ids>
<id>1</id>
<id>2</id>
</ids>'
declare @handle int
exec sp_xml_preparedocument @handle output, @XMLDoc
select * from MyTable where id in (
select id from openxml( @handle, '/ids/id') with (id int '.')
)https://dba.stackexchange.com/questions/52298
复制相似问题