当前位置: 代码迷 >> Sql Server >> 关于存储过程拼接条件的语句
  详细解决方案

关于存储过程拼接条件的语句

热度:98   发布时间:2016-04-24 09:26:50.0
关于存储过程拼凑条件的语句
 

create procedure [prc_paperList]
@usercode varchar(20),
@casestr varchar(200)
as
 select * from T where usercode=@usercode 


我想条件语句在外面拼凑,拼凑完毕后然后通过@casestr传过来,但不知道后面怎么写好呢
------解决思路----------------------

DECLARE @sql varchar(max)
SET @sql = select * from T where '+@casestr
EXEC(@sql)

------解决思路----------------------
ALTER procedure [prc_paperList]
@usercode varchar(20),
@casestr varchar(200)
AS
--替换单引号为两个单引号
SET @casestr=REPLACE(@casestr,'''','''''''')
DECLARE @SQL NVARCHAR(MAX)
--条件@casestr的开头有没有AND自己调整哈
SET @SQL='select * from T where usercode=@usercode'+@casestr
EXEC SYS.SP_EXECUTESQL @SQL,N'@usercode varchar(20)',@usercode

------解决思路----------------------
设置变量 ,然后再饮用过来
------解决思路----------------------
你的查询条件应该是这个吧
@casestr
和正常写的时候一样,该一个一个,该两个两个

存储过程里面这句会批量把单个变成两个
SET @casestr=REPLACE(@casestr,'''','''''''')

如果是select * from T where usercode=@usercode这边的话,
在编辑器里,直接Ctrl + F替换一下
  相关解决方案