SELECT name FROM [test]..sysobjects where xtype='U' ******** 补充: 如果有的表不存在【时间】那就用下面的语句直接把含有【时间】列的表名找到: SELECT d.name FROM [test]..syscolumns a inner join [test]..sysobjects d on a.id=d.id and d.xtype='U' and a.name='时间' **********
如:遍历结果存储到数据库test2中 insert into [test2]..遍历出的表名 select * from 遍历出的表名 where datediff(day,'2009-08-07',时间)>0;
重复上面的sql语句指导讲数据库test中的表名完全遍历完为止。
************************************************************* 补充:我试验了一下下面把实验代码给你(建一个存储过程) create proc test as --定义游标变量 declare cur1 cursor for SELECT d.name FROM [test]..syscolumns a inner join [test]..sysobjects d on a.id=d.id and d.xtype='U' and a.name='时间' --定义临时变量 declare @tmp varchar(1000) --定义sql字符串 declare @strsql varchar(4000) --打开游标 open cur1 --读取第一条数据,也就是第一个表名 fetch next from cur1 into @tmp --是读完 while(@@fetch_status = 0) begin --连接sql文 set @strsql='insert into [test2]..'+@tmp++' select * from '+@tmp+' where datediff(day,'+char(39)+'2009-08-07'+char(39)+',时间)>0' --执行这个sql exec(@strsql) --读取下一条数据 fetch next from cur1 into @tmp end --关闭游标 close cur1 --摧毁游标所占资源 deallocate cur1参考技术AHSTMT stmt; char * sqlquery="select branch_name,sum(balance) from account group by branch_name"; SQLAllocStmt(conn,&stmt); error=SQLExecDirect(stmt,(SQLCHAR*)sqlquery,SQL_NTS); if (error==SQL_SUCCESS)