A CASE
не может вернуть набор результатов, но только одно значение.
Что вы можете сделать, это написать совершенно разные sql для каждого дБ
declare @DBName varchar(100)
select @DBName = db_name()
if @DBName = 'dev'
begin
SELECT a,b... FROM DEVSERVER.DEVOTHERDB.dbo.mytable
end
else if @DBName = 'prod'
begin
SELECT a,b... FROM PRODSERVER.PRODOTHERDB.dbo.mytable
end
другой вариант использует динамический sql
declare @DBName varchar(100)
select @DBName = db_name()
declare @sql varchar(max)
if @DBName = 'dev'
begin
set @sql = 'SELECT a,b... FROM DEVSERVER.DEVOTHERDB.dbo.mytable'
end
else if @DBName = 'prod'
begin
set @sql = 'SELECT a,b... FROM PRODSERVER.PRODOTHERDB.dbo.mytable'
end
exec (@sql)