
如何查询所有数据库中包含某一字符串的存储过程。是所有数据库,不是当前数据库。
2个回答
展开全部
假定你是要查询同一服务器上同一实例上的若干数据库,基本思路就是先找到当前实例上的所有数据库集合,然后再根据这些数据库集合去获取每个集合对应的存储过程集合。因为你这边未提供具体数据库语言,这里已MSSQL为例,具体实现过程如下(假定你需要搜索字符串为【数据库】):
declare @sql nvarchar(2000)
declare @dbname varchar(20)
declare @pname varchar(100)
create table #tmptb (dbname varchar(20),pname varchar(100))
declare mycur cursor for
select name from master.dbo.sysdatabases where dbid > 4
open mycur
fetch next from mycur into @dbname
while @@FETCH_STATUS = 0
begin
set @sql = 'select distinct ''' + @dbname + ''' as dbname,a.name as procname from ' + @dbname + '.dbo.sysobjects a inner join ' + @dbname + '.dbo.syscomments b ON a.id = b.id where a.xtype = ''P'' and b.[text] LIKE ''%数据库%'' order by a.name'
insert into #tmptb(dbname,pname) exec(@sql)
fetch next from mycur into @dbname
end
close mycur
deallocate mycur
select * from #tmptb
drop table #tmptb
go
当然,具体应用时你可以创建一个存储过程,存储过程定义一个入参【待匹配字符串】,如果有需要的话也可以定义一个出参【查找到的集合】,以实际需要灵活调整就可以了。
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询