首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 数据库 > SQL Server >

存储过程中SQL语句拼接有关问题

2012-03-15 
存储过程中SQL语句拼接问题存储过程中这样写:insert into 临时表 select * from(select * from 表 where n

存储过程中SQL语句拼接问题
存储过程中

这样写:
insert into 临时表 select * from(
select * from 表 where name='A' and convert(datetime,B.F_LWRQ)>dateadd(d,-8,getdate()) and……
)
可以查询出结果

这样写
declare @sQuery nvarchar(4000)
set @sQuery='and convert(datetime,B.F_LWRQ)>dateadd(d,-8,getdate())'

insert into 临时表 select * from(
select * from 表 where name='A' + @sQuery and……
)
就查询不出来结果了

本人菜鸟,请问各位这应该怎么拼接, 谢谢了!

[解决办法]
select * from 表 where name='A' & @sQuery
试试
[解决办法]
declare @sQuery nvarchar(4000)
set @sQuery='and convert(datetime,B.F_LWRQ)>dateadd(d,-8,getdate())'

insert into 临时表 select * from(
select * from 表 where name='A' + @sQuery and……
)

来看下这个语句

1、变量@sQuery是个条件的字符串拼接,也就是说要动态去执行,而楼主的是普通的SQL语句,肯定是不成功的;

2、即便没有这个变量,insert into 表 select * from (子查询) t 注意这里的t,一定要加个名称。
[解决办法]

探讨

如果你需要将条件作为一个变量传进去,那么整个插入语句就用变量,然后动态执行。

例如,可能有地方需要楼主改动些。

SQL code

declare @sQuery nvarchar(4000)
declare @sql nvarchar(4000)
set @sQuery='and convert(datetime,B.F_LWRQ)>dateadd(d,-8,getdate())……

热点排行