借助SQL游标,可以轻松解决SQL查询全表的问题。接下来的SQL server内容就为您介绍该SQL游标的写法,供您参考,希望对您学习SQL游标有所帮助。
Create procedure Full_Search(@string varchar(100)) as begin declare @tbname varchar(100) declare tbroy cursor for select name from sysobjects where xtype='u' --第一个游标遍历所有的表 open tbroy fetch next from tbroy into @tbname while @@fetch_status=0 begin declare @colname varchar(100) declare colroy cursor for select name from syscolumns where id=object_id(@tbname) and xtype in ( select xtype from systypes where name in ('varchar','nvarchar','char','nchar') --数据类型为字符型的字段 ) --第二个游标是第一个游标的嵌套游标,遍历某个表的所有字段 open colroy fetch next from colroy into @colname while @@fetch_status=0 begin declare @sql nvarchar(4000),@j int select @sql='select @i=count(1) from ' +quotename(@tbname) +' where '+ quotename(@colname)+' like '+'''%'+@string+'%''' exec sp_executesql @sql,N'@i int output',@i=@j output --输出满足条件表的记录数 if @j>0 begin declare @v varchar(8000) set @v='select distinct '+quotename(@colname)+' from ' +quotename(@tbname) +' where '+ quotename(@colname)+' like '+'''%'+@string+'%''' exec(@v) end fetch next from colroy into @colname end close colroy deallocate colroy fetch next from tbroy into @tbname end close tbroy deallocate tbroy end exec Full_Search '市场' drop proc Full_Search