I did a few posts back in 2016 on finding objects in SQL (a column in all tables, all custom sql objects in a database and trigger in all databases).
I needed to find if a function existed in all databases, so I produced the following script which searches in all Microsoft Dynamics GP databases:
-- drop stored proc if it exists
IF OBJECT_ID (N'usp_AZRCRV_FindFunctionInAllDatabases', N'P') IS NOT NULL
DROP PROCEDURE usp_AZRCRV_FindFunctionInAllDatabases
GO
-- create stored proc
CREATE PROCEDURE usp_AZRCRV_FindFunctionInAllDatabases
@Function VARCHAR(50) = 'uf_AZRCRV'
AS
/*
Created by Ian Grieve of azurecurve|Ramblings of a Dynamics GP Consultant (https://www.azurecurve.co.uk/)
This code is licensed under the Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International (CC BY-NC-SA 4.0 Int).
*/
DECLARE @command nvarchar(max)
SELECT @command = 'IF EXISTS ( SELECT 1 FROM SY01500 AS [''Company Master''] INNER JOIN sys.databases [''Sys Databases''] ON [''Company Master''].INTERID = [''Sys Databases''].name WHERE name = ''?'')
BEGIN
USE [?];
DECLARE @stmt nvarchar(max) DECLARE @n char(1) SET @n = char(10)
SELECT DB_NAME() AS ''DB_NAME'',t.name FROM sys.objects AS t
WHERE t.type_desc LIKE ''%FUNCTION%''
AND t.name LIKE '''+ @Function + '%''
END'
EXEC sp_MSforeachdb @command
GO
-- grant execute permission on stored proc to DYNGRP
GRANT EXECUTE ON usp_AZRCRV_FindFunctionInAllDatabases TO DYNGRP
GO
-- execute stored proc
EXEC usp_AZRCRV_FindFunctionInAllDatabases 'dgpp'
GO