日期:2014-05-17  浏览次数:20758 次

游标遍历所有表
假如我要查询一个值出现在数据库哪个表,哪个列。我写了个游标

但是sysobjects里面有名字,但是实际数据库里面没有这个表,
于是就报错。
对象名 ‘XX’  无效
请问怎么改?


DECLARE @what varchar(100) SET @what='烟'
declare @sql varchar(max)
declare tablecursor cursor local for
select sql='if exists (select 1 FROM '+a.name+' WHERE '+b.name+' LIKE ''%'+@what+'%'')
PRINT  ''[表,字段]:'+a.name+','+b.name+''''
from sysobjects a,syscolumns b where a.id=b.id
and a.xtype='u'

 open TableCursor
 fetch next from tablecursor into @sql
 while @@fetch_status=0
 begin
  exec(@sql)
  fetch next from tablecursor into @sql
  end
 close tablecursor
 
    deallocate TableCursor

------解决方案--------------------

假如数据量大了  你这要跑到何年马月才有结果啊   暂且都不说报不报错的问题
------解决方案--------------------
引用:
引用:假如数据量大了  你这要跑到何年马月才有结果啊   暂且都不说报不报错的问题
只是一个理念。
  现在是发现sysobjects表里面有的表面但是实际数据库没有。
 sysobjects不是根据实际数据库来建立的吗?


sys.objects存放的是数据库中所有对象的信息   例如  表   索引   存储过程    主外键等等
------解决方案--------------------
http://blog.csdn.net/szstephenzhou/article/details/8423499