Inline SQL To Set Fully Qualified Name
Simplify:

SET @FQN = 'servername.database.dbo.newdatabase';

IF @table = 'OneTwoThree'
BEGIN
    SET @FQN = 'servername.database.dbo.onetwothree';
END

IF @table = 'FourFiveSix'
BEGIN
    SET @FQN = 'servername.database.dbo.fourfivesix';
END


Or:

SET @FQN = 'servername.database.dbo.' + CASE @table
  WHEN 'OneTwoThree' THEN 'onetwothree'
  WHEN 'FourFiveSix' THEN 'fourfixesix'
  ELSE 'newdatabase'
END;


Or even:

SET @FQN = 'servername.database.dbo.' + CASE 
  WHEN @table IN ('OneTwoThree', 'FourFiveSix')
  THEN LOWER(@table) ELSE 'newdatabase'
END;


Also, you can do this whole thing without the cursor:

DECLARE @sql nvarchar(4000) = N'', -- always use nvarchar for dynamic SQL
        @FQN nvarchar(4000) = N'servername.database.dbo.';

CREATE TABLE #tablename (tablename varchar(1000));

INSERT #tablename(tablename) VALUES('OneTwoThree'),('FourFiveSix'),('FourOmegaSix');

SELECT @sql += N'
  SELECT TOP 1 * FROM ' + @FQN + CASE
  WHEN tablename IN ('OneTwoThree', 'FourFiveSix')
  THEN LOWER(tablename) ELSE N'newdatabase' END + N'; --' + tablename
FROM #tablename;

PRINT @sql;

DROP TABLE #tablename;


Output:

  SELECT TOP 1 * FROM servername.database.dbo.onetwothree; --OneTwoThree
  SELECT TOP 1 * FROM servername.database.dbo.fourfivesix; --FourFiveSix
  SELECT TOP 1 * FROM servername.database.dbo.newdatabase; --FourOmegaSix


(There's still a hidden loop there, but it's far less code to look at, maintain, etc.)