在写SQL分页的存储过程时,我需要这样去调用我的存储过程,参数含义就不用在解释了,就是一般的分页存储过程传参
其中,AND ", "+S_Types+"," LIKE "%, 1,%" 是我传进去的一个WHERE条件
- SQL code
EXECUTE 分页过程名字 10,'查询的字段',1,'AND ", "+S_Types+"," LIKE "%, 1,%" ' ,1,15,0,30.0,'表1 LEFT JOIN 表2','表1.[id] = 表2.UserID','',''
在存储过程中,对传进来的WHERE条件语句进行了如下操作:
- SQL code
Replace(@WhereStr,'"','''')
这是我想得到的执行语句
- SQL code
SELECT TOP 10 查询的字段 FROM 表1 LEFT JOIN 表2 ON 表1.[id] = 表2.UserID WHERE 其他WHERE条件 AND ', '+S_Types+',' LIKE '%, 1,%' ORDER BY 排序条件
通过在存储过程中使用PRINT打印,也得到了我想要的SQL语句
不过,在存储过程中 通过EXEC执行的时候却出现了错误 EXEC @SQLStr
服务器: 消息 207,级别 16,状态 3,行 1
列名 'S_Types' 无效。
请教一下,在存储过程中如何才能有效的使用 单引号 这个东西呢。
------解决方案--------------------
- SQL code
--参考一下 下面这句declare @sql varchar(max)declare @S_Types varchar(120)set @S_Types='col_name'set @sql='select top 10 * from a left join b on a.id=b.userid where ..... and [email protected]_Types+' like ''%,1,%'' order by [排序条件] 'print @sql/*select top 10 * from a left join b on a.id=b.userid where ..... and col_name like '%,1,%' order by [排序条件] */
------解决方案--------------------
EXECUTE 分页过程名字 10,'查询的字段',1,'AND ", "+表1.S_Types+"," LIKE "%, 1,%" ',......
------解决方案--------------------
EXECUTE 分页过程名字 10,'查询的字段',1,'AND ", "+S_Types+"," LIKE "%, 1,%" ' ,
这里 S_Types 是你传入的参数还是查询条件里的字段名。。。
------解决方案--------------------
确认表1有S_Types字段吗?
确认那个print出来的SQL能执行通过吗.
------解决方案--------------------
S_Types --> 表2.S_Types