为了账号安全,请及时绑定邮箱和手机立即绑定

sql存储过程全站搜索、并分页

sql存储过程全站搜索、并分页

阿波罗的战车 2018-12-07 08:55:14
--但只已知一个字符串,去查询整个数据库内有那些表里面包含这个字符串,用游标可以实现了这个需求,但是我想求一个能查询数据库里面所有nvarchar、varchar并且能分页的存储过程:   create proc Full_Search(@string varchar(50))asbegin declare @tbname varchar(50) declare tbroy cursor  for select name from sysobjects  where xtype='u'   --第一个游标遍历所有的表 open tbroyfetch next from tbroy into @tbnamewhile @@fetch_status=0begin    declare @colname varchar(50) 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(1000),@j int select @sql='select @i=count(1) from ' +@tbname +'  where '+ @colname+' like '+'''%'+@string+'%''' exec sp_executesql @sql,N'@i int output',@i=@j output   --输出满足条件表的记录数 if @j>0 exec('select  distinct '+@colname+' from ' +@tbname +'  where '+ @colname+' like '+'''%'+@string+'%''')  fetch next from colroy into @colname end          close colroy deallocate colroy fetch next from tbroy into @tbnameendclose tbroydeallocate tbroyend exec Full_Search  '市场' drop proc Full_Search    
查看完整描述

2 回答

?
DIEA

TA贡献1820条经验 获得超2个赞

问题打错了~

查看完整回答
反对 回复 2019-01-07
?
摇曳的蔷薇

TA贡献1793条经验 获得超6个赞

建议使用CTE(Common Table Expressions,公用表表达式),参考:SQL Server2005的几种分页方法

查看完整回答
反对 回复 2019-01-07
  • 2 回答
  • 0 关注
  • 583 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信