Here is a quick'n'dirty solution... Not pretty but it works!
---------------------------------------------------------------------
declare @proc_name nvarchar(100)
select @proc_name = 'uspPeriodsOpen'
create table #db (z smallint identity(0, 1), dbname nvarchar (100), present tinyint)
insert into #db (dbname)
EXEC sp_MSforeachdb @command1="select '?'"
declare @z smallint, @maxz smallint, @sql nvarchar (500), @db nvarchar (100)
select @z = 0,
@maxz = max(z)
from #db
while @z <= @maxz
begin
select @db = quotename(dbname)
from #db
where z = @z
select @sql = 'update #db set present = (select count(*) from ' + @db + '..sysobjects where name = ''' + convert(nvarchar, @proc_name) + ''') where z = ' + convert(nvarchar, @z)
exec sp_executesql @sql
select @z = @z + 1
end
select dbname from #db where present = 1
drop table #db
|