日期:2014-05-18  浏览次数:20465 次

存储过程中的参数循环
存户过程中有一个参数,在程序中传值的时候传的是多个值,根据该参数值得个数执行存储过程。
存储过程中有5条sql语句,该参数个数为一个时。5条语句执行医遍,参数个数为多个时,sql语句中的2条根据参数的个数执行。
怎么在存储过程中对该参数进行循环?

我试过在程序进行循环赋值行不通,所以考虑在存储过程中循环该参数。

请高手指点

------解决方案--------------------
把数组组成一个字符串输入就行.

例子:
create procedure #IntListToTable
@cslist varchar(8000),
@tablename Sysname
AS
Begin
Declare @spot smallint, @str varchar(8000), @sql varchar(8000)
while @cslist < > ' '
Begin
Set @spot = charindex( ', ', @cslist)
if @spot > 0
Begin
Set @str = cast(left(@cslist, @spot-1) as int)
set @cslist = right(@cslist, len(@cslist)-@spot)
end
else
Begin
Set @str = cast(@cslist as int)
Set @cslist = ' '
End
Set @sql = 'Insert Into ' + @tablename + ' Values( '+convert(varchar(100),@str)+ ') '
exec(@sql)
end
end

create table #vals (id INT)

exec #IntListToTable '30000,50000,8000,2000,3000 ', '#vals '

select id from #vals

结果:

30000
50000
8000
2000
3000