您的当前位置:首页正文

SQL中in参数在存储过程中传递及使用的方法

来源:华佗小知识
SQL中in参数在存储过程中传递及使⽤的⽅法

背景:

1、使⽤存储过程2、存储过程中有in

3、in括号⾥⾯的内容作为参数传递解决⽅案:1、直接拼接sql

可在存储过程中拼接字符串,然后执⾏此字符串,类似于js中的evalPROCEDURE [dbo].[INSelect] @P_0 NVARCHAR(600) AS

DECLARE @A VARCHAR(6000)

SET @A='SELECT * FROM testTb WHERE zip IN ('+@P_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 @SourceSql=@SourceSql+@StrSeprate 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直接使⽤第⼀种⽅法即可,复杂写的可以使⽤第⼆⽅法。

也可以使⽤临时表的⽅法,不过依然需要先切割字符串。

因篇幅问题不能全部显示,请点此查看更多更全内容