Marcello, if you absolutely have to be able to achieve your goal with a single script, you could try iterating through the databases and running TSQL in the context of each database. An example is below with sp_executesql running sp_executesql from/in each database in the cursor loop. Note that @Tsql is static here, so it's declared outside of the cursor loop. However it could just as easily be built dynamically within the loop. This example isn't easy. It might even seem a little convoluted. I'll let you be the judge.

    /*
        Build the TSQL statement that you want to run on each database.
        Here is an example that finds database users that are members of
        specific fixed database roles and drops them from those roles.
        Note the single quotes are quadrupled.
    */
    DECLARE @Tsql NVARCHAR(MAX) = '
    	DECLARE @User SYSNAME, @Role SYSNAME
    	DECLARE curUsers CURSOR FAST_FORWARD READ_ONLY FOR
    		SELECT u.name UserName, r.name dbRole
    		FROM sys.database_principals u
    		JOIN sys.database_role_members rm
        		ON rm.member_principal_id = u.principal_id
    		JOIN sys.database_principals r
        		ON r.principal_id = rm.role_principal_id
    		WHERE r.name IN (''''db_accessadmin'''', ''''db_backupoperator'''', ''''db_securityadmin'''')
    		AND u.name NOT IN (''''dbo'''', ''''guest'''', ''''INFORMATION_SCHEMA'''', ''''public'''', ''''sys'''')
    		ORDER BY u.name, r.name
        
    	OPEN curUsers
    	FETCH NEXT FROM curUsers INTO @User, @Role
        
    	WHILE @@FETCH_STATUS = 0
    	BEGIN
    		EXEC sp_droprolemember @Role, @User
    		FETCH NEXT FROM curUsers INTO @User, @Role
    	END
         
    	CLOSE curUsers
    	DEALLOCATE curUsers
        ';
    
    DECLARE @DB SYSNAME
    DECLARE curDB CURSOR FOR
        SELECT d.name
        FROM master.sys.databases d
        --Comment out/adjust this WHERE clause as needed.
        WHERE d.name NOT IN ('master','tempdb')
        
    OPEN curDB
    FETCH NEXT FROM curDB INTO @DB, @DBOwner
        
    WHILE @@FETCH_STATUS = 0
    BEGIN
        PRINT @DB
        
        --Execute sp_executesql, which executes sp_executesql 
        --in the context of a specific database.
        SET @Tsql = '[' + @DB + ']..sp_executesql N''' + @Tsql + ''''
        EXEC sp_executesql @Tsql;
        
        FETCH NEXT FROM curDB INTO @DB, @DBOwner
    END
        
    CLOSE curDB
    DEALLOCATE curDB 
    GO