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替换一下