在SQL存储过程中给条件变量加上单引号,不加语句就会出问题,以下就是在存储过程中将条件where设置成了动态变化的,给where赋完值再和前面的语句拼接,再execute(SQL)
set @where= '(DATEDIFF(day,'''+CONVERT(varchar(100), @d_start, 23)+''',sdate)>=0 and DATEDIFF(day,'''+CONVERT(varchar(100), @d_end, 23)+''',sdate)<=0) and '
+' shopid='''+@shopid+''' and VenderID in '
+' (select vender from tableB where vendertype=''类型'' and shopid='''+@shopid+''')'<pre name="code" class="sql">@d_start@d_end,@shopid这三个都是调用存储过程传进来的参数,要将这些与varchar类型的拼接在一起就要用每边3个单引号+变量, eg: where shopid='''+@shopid+''' 这样写才可以。
本文介绍如何在SQL存储过程中使用动态WHERE条件,通过给条件变量加上单引号实现与字符串的正确拼接,确保存储过程能根据不同的输入参数灵活地生成SQL查询语句。
1301

被折叠的 条评论
为什么被折叠?



