昨天发了一个求助贴子,自己说得不清楚,再次请教各位大虾。想在一个循环中先声明两个变量,然后在后面的变量中应用declare @mb int
select @mb=0
while @mb <=10 begin
declare @QE int,@QF int,
select @QE=a.e from MB'+ltrim(@mb)+' a where a.a=1
select @QF=a.f from MB'+ltrim(@mb)+' a where a.a=1 declare @A varchar(1000)
set @A=
'
insert into TB select a.a,a.b,a.c,a.d from mb'+ltrim(@mb)+' a
where '+ltrim(@QE) +' < '+ltrim(@QF) +' and '+ltrim(@QE) +' + '+ltrim(@QF) +' !=100
'
exec(@A)set @mb=@mb+1
end
select @mb=0
while @mb <=10 begin
declare @QE int,@QF int,
select @QE=a.e from MB'+ltrim(@mb)+' a where a.a=1
select @QF=a.f from MB'+ltrim(@mb)+' a where a.a=1 declare @A varchar(1000)
set @A=
'
insert into TB select a.a,a.b,a.c,a.d from mb'+ltrim(@mb)+' a
where '+ltrim(@QE) +' < '+ltrim(@QF) +' and '+ltrim(@QE) +' + '+ltrim(@QF) +' !=100
'
exec(@A)set @mb=@mb+1
end
解决方案 »
- 分组排序问题?
- 根据单位改变数据类型
- 请问类似 WHERE FullName LIKE '[王李张]小军' 这样的条件从句,可以从姓名列中查出叫“王小军”、“李小军”或“张小军”的记录吗?
- 请问哪里有SQL SERVER的用户手册(官方文档),特别是发布/订阅方面的
- 如何给procedure改名字?
- LEFT OUTER JOIN 是什么意思。 请高人指教。。
- (100分求助)SQL SERVER把excel中的数据通过企业管理器导入的问题
- SQL_SERVER2000的SQL事件探查器的问题,急~~~~~~~~~~~~~~困惑中。。。。。
- 数据库合并
- 本地Excel文件导入到Sql Server数据库中
- 如何判断表是否存在???
- case 语句
这个不要在循环里一直创建。你就放在循环外面创建好了,然后在每次循环开始前先把这个值设为空
declare @mb int
declare @QE int,@QF int
declare @A varchar(1000) select @mb = 0
while @mb <= 10
begin
select @QE = a.e from MB'+ltrim(@mb)+' a where a.a = 1
select @QF = a.f from MB'+ltrim(@mb)+' a where a.a = 1
set @A= ' insert into TB select a.a,a.b,a.c,a.d from mb'+ltrim(@mb)+' a
where '+ltrim(@QE) +' < '+ltrim(@QF) +' and '+ltrim(@QE) +' + '+ltrim(@QF) +' !=100 '
exec(@A)
set @mb = @mb + 1
end PS一句,LZ你写的SQL语句格式很乱啊
declare @ee int,@ff int,@gg int
select @ee=1,@ff=1,@gg=1,
@s=N'insert into TB1 select n.e,n.f,n.g from TB2 m where (@e=m.e and @f=m.f and @g=m.g) and m.a-m.b!=n.a-n.b'
exec sp_executesql @s,N'@e int,@f int,@g int',@e=@ee,@f=@ff,@g=@gg好好理解sp_executesql 和exec有什么不同
declare @QE int,@QF int,
select @QE=a.e from MB'+ltrim(@mb)+' a where a.a=1
select @QF=a.f from MB'+ltrim(@mb)+' a where a.a=1 首先这里就有问题,这里就得是动态的
用exec(@sql)
declare @mb int
declare @QE int,@QF int
declare @A varchar(1000) select @mb = 0
while @mb <= 10
begin
select @QE = a.e from MB'+ltrim(@mb)+' a where a.a = 1
select @QF = a.f from MB'+ltrim(@mb)+' a where a.a = 1
set @A= ' insert into TB select a.a,a.b,a.c,a.d from mb'+ltrim(@mb)+' a
where '+ltrim(@QE) +' < '+ltrim(@QF) +' and '+ltrim(@QE) +' + '+ltrim(@QF) +' !=100 '
exec(@A)
set @mb = @mb + 1
end
sp_executesql能通过以上方式动态改变要查询的表吗?LZ的意思好象是动态访问表取得值,然后再插入到表中。
第 6 行: '+ltrim(@mb)+' 附近有语法错误。
服务器: 消息 170,级别 15,状态 1,行 7
第 7 行: '+ltrim(@mb)+' 附近有语法错误。