SQL中in参数在存储过程中传递及使用的方法
Posted 许鸿飞
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了SQL中in参数在存储过程中传递及使用的方法相关的知识,希望对你有一定的参考价值。
背景:
1、使用存储过程
2、存储过程中有in
3、in括号里面的内容作为参数传递
解决方案:
1、直接拼接sql
可在存储过程中拼接字符串,然后执行此字符串,类似于js中的eval
PROCEDURE [dbo].[INSelect] @P_0 NVARCHAR(600) AS DECLARE @A VARCHAR(6000) SET @A=‘SELECT * FROM testTb WHERE zip IN (‘[email protected]_0+‘)‘
然后用系统存储过程sp_executesql执行@A即可!
2、定义方法将字符切割为集合
切割字符串方法
Create function func_split_hongfei0416j (@SourceSql varchar(8000),@StrSeprate varchar(2)) returns @temp table(col varchar(100)) as begin declare @ch as varchar(100) set @[email protected][email protected] while(@SourceSql<>‘‘) begin set @ch=left(@SourceSql,charindex(@StrSeprate,@SourceSql,1)-1) insert @temp values(@ch) set @SourceSql=stuff(@SourceSql,1,charindex(@StrSeprate,@SourceSql,1),‘‘) end return end
存储过程书写demo
CREATE PROC ps_spit_test ( @lettertype VARCHAR(100) ) AS BEGIN select * from y_paper where lettertype in (select Col As lettertype from dbo.func_split_hongfei0416j(@lettertype,‘,‘)) end exec ps_spit_test ‘118,148,163‘
如果是简单的sql直接使用第一种方法即可,
复杂写的可以使用第二方法。
也可以使用临时表的方法,
不过依然需要先切割字符串。
以上是关于SQL中in参数在存储过程中传递及使用的方法的主要内容,如果未能解决你的问题,请参考以下文章