我想动态创建365个表,表名按日期命名:M01D01,M01D02.........M12D31,字段只有一个ID
这是我写的语句:
declare @m int,@d int
declare @sql varchar(50),@tablename varchar(20)
select @m=1,@d=1
while @m<12
begin
while @d<=31
begin
select @tablename='M'+right(cast( 100+@m as varchar(20)),2 )+'D'+right(cast(100+@d as varchar(20)),2)
select @sql='create table '+@tablename+' ([id] int)'
select @d=@d+1
--exec (@sql)
print @sql //先测试,没有真正建表
end
select @m=@m+1
end
结果:
create table M01D01 ([id] int)
.
.
.
create table M01D31 ([id] int)
问题:
外循环怎么只循环一次?
这是我写的语句:
declare @m int,@d int
declare @sql varchar(50),@tablename varchar(20)
select @m=1,@d=1
while @m<12
begin
while @d<=31
begin
select @tablename='M'+right(cast( 100+@m as varchar(20)),2 )+'D'+right(cast(100+@d as varchar(20)),2)
select @sql='create table '+@tablename+' ([id] int)'
select @d=@d+1
--exec (@sql)
print @sql //先测试,没有真正建表
end
select @m=@m+1
end
结果:
create table M01D01 ([id] int)
.
.
.
create table M01D31 ([id] int)
问题:
外循环怎么只循环一次?
declare @sql varchar(50),@tablename varchar(20)
select @m=1
while @m<12
begin
select @d=1 ---- @d 的初始化应该在循环中
while @d<=31
begin
select @tablename='M'+right(cast( 100+@m as varchar(20)),2 )+'D'+right(cast(100+@d as varchar(20)),2)
select @sql='create table '+@tablename+' ([id] int)'
select @d=@d+1
--exec (@sql)
print @sql
end
select @m=@m+1
end