日期:2014-05-17  浏览次数:20602 次

存储过程不定参数问题
我在存储过程中需要用到一个查询:

select …… from myTable where querytype in (1,2,4,6,7……)

而对于 条件( 1,2,4,6,7……) 是需要我传进去的不定参数(int型), 这个条件我该如何传递?存储过程内部查询该如何写?


谢谢各位!

------解决方案--------------------
将这个'1,2,4,6,7…,'作为字符串传进去喽,当然。。。。
在存储过程里
declare @sql varchar(max)

set  @sql ='select …… from myTable where querytype in '+@参数

exec(@sql)

还是很简单的


------解决方案--------------------
最简单的方法


DECLARE @ids VARCHAR(100)
SET @ids='1,2,4,6,7'

DECLARE @sql VARCHAR(1000)

SET @sql='select * from myTable where querytype in ('''+@ids+''')'
EXEC(@sql)
------解决方案--------------------
假设( 1,2,4,6,7……)是存在MyType表里,查询Type的语句是(select querytype from MyType where field1=@查询Type的条件)。那么,


select t1.* from myTable t1 join (select querytype from MyType where field1=@查询Type的条件) as t2 on t1.querytype =t2.querytype