You have to iterate through all databases to do that. If you're adventurous enough, you could use the undocumented stored procedure sp_MSForEachDB, which is [buggy and unreliable][1].

Another possibility is using one of its replacements: [Aaron Bertrand's][2] or [my humble attempt][3].

Yet another possibility is using a cursor to loop through all databases:

    USE master;
    
    DECLARE @name sysname;
    DECLARE @sql nvarchar(max) = '
    	SELECT 
    		DB_NAME() AS [database_name],
    		OBJECT_SCHEMA_NAME(object_id) AS [schema_name],
    		name AS [procedure_name]
    	FROM sys.procedures
    ';
    DECLARE @theSQL nvarchar(max);
    
    DECLARE @results TABLE (
    	[database_name] sysname,
    	[schema_name] sysname,
    	[procedure_name] sysname
    );
    
    DECLARE dbs CURSOR STATIC LOCAL FORWARD_ONLY READ_ONLY 
    FOR
    SELECT name 
    FROM sys.databases;
    -- you may want to exclude system databases here
    -- WHERE name NOT IN ('master', 'model', 'msdb', 'tempdb', 'distribution')
    
    OPEN dbs;
    FETCH NEXT FROM dbs INTO @name;
    
    WHILE @@FETCH_STATUS = 0
    BEGIN
    	SET @theSQL = 'EXEC ' + QUOTENAME(@name) + '.sys.sp_executesql @sql';
    
    	INSERT @results
    	EXEC sys.sp_executesql @theSQL, N'@sql nvarchar(max)', @sql
    
    	FETCH NEXT FROM dbs INTO @name;	
    END
    
    CLOSE dbs;
    DEALLOCATE dbs;
    
    SELECT *
    FROM @results;



  [1]: https://sqlblog.org/2010/02/08/bad-habits-to-kick-relying-on-undocumented-behavior
  [2]: https://www.mssqltips.com/sqlservertip/5694/execute-a-command-in-the-context-of-each-database-in-sql-server--part-2/
  [3]: http://spaghettidba.com/2011/09/09/a-better-sp_msforeachdb/