declare @a intdeclare @sql varchar(1000)select @a=max(cast(replace(name,'tab','') as int)) from sysobjects where name like 'tab_%' and isnumeric(replace(name,'tab',''))=1set @a=@a+1set @sql='create table tab'+rtrim(@a)+'(列 数据类型)'exec(@sql)
解决方案 »
- 新手求助小问题,请大家帮忙。在线等
- 求改MySQl密码
- 连接数据库登录程序
- 请问在sql中应用bcp或BULK INSERT将文本导入数据库时是不是只能用服务器上的文本
- 悲催,断电数据库置疑,修复后dbcc checkdb报索引错误
- 求SQL:应该是循环语句吧
- sql问题!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!(online)
- exec (@sqlstr)与exec ('......')有何区别吗?
- sql server 数据库转换成access数据库? 在线等待,有效马上给100分!
- 在哪里能下载到sybase
- 请问一下可以用SQL语句来随机选出若干条记录吗?
- 在异地计算机上能通过企业管理器注册SQL Server2000服务器并操作数据库吗?(得分多多)
换个思路呢
declare @a int
set @a=0
while not OBJECT_ID('tab'+cast(@a as char) IS NULL
set @a=@a+1
......
上面的写法错误很多的,只是用来说一下思路:从@a最小的表查起,即先看tab0是否存在,如果存在@a=@a+1,再看tab1是否存在......最后返回@a+1 。问题是怎样生成tab0、tab1,最后再怎样返回结果@a?程序其他地方不能够从系统表中查表。
set @a=0
while OBJECT_ID('tab'+cast(@a as varchar(10))) IS not NULL
set @a=@a+1exec('create table tab'+cast(@a as varchar(10))+' (a int)')
set @a=0
while OBJECT_ID('tab'+cast(@a as varchar(10))) IS not NULL
set @a=@a+1declare @sql varchar(8000)
set @sql='create table tab'+cast(@a as varchar(10))+' (a int)'
exec(@sql)