当前位置: 代码迷 >> Sql Server >> exec sp_executesql where in 参数 无效解决方法
  详细解决方案

exec sp_executesql where in 参数 无效解决方法

热度:1119   发布时间:2016-04-24 09:03:03.0
exec sp_executesql where in 参数 无效
exec sp_executesql N'select FunctionName from  T_Sys_Function where Id in(@ou)' , N'@ou nvarchar(20)',@ou=N'A1'',''B1'

写成  ,@ou=N'A1,B1'
@ou=N‘’'A1'',''B1'‘’
这几种都 查不出结果
当参数 中  遇到 in   对应的字段是 字符类型 ,就是查询不出来结果 。求高手赐教 !!!
------解决思路----------------------
这个是明显啊。
你在查询窗口里面可以写成
declare @a varchar(max);
set @a=1,2?
set @a='1,2'?
set @a='''1'',''2'''?

select * from tb where a in(@a)
都是不形的,这个语法都不对。
------解决思路----------------------
肯定不行的,IN()里面需要一些变量或常量,

而以一个内容带逗号的变量就想当多个量,简直是异想天开

你既然都动态执行了,就应该直接拼接进SQL了

DECLARE @SQL NVARCHAR(4000),@ou NVARCHAR(4000)
SET @ou='''A1'',''B1'''
SET @SQL=N'select FunctionName from  T_Sys_Function where Id in('+@ou+')' 
exec(@SQL)
  相关解决方案