借助SQL游标,可以轻松解决SQL查询全表的问题。下面就为您介绍该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
【编辑推荐】