У меня следующий запрос, который нужно выполнить в разных базах данных, но имя таблицы и ее структура одинаковы.
--query to be executed
select cust_num, name, credit_hold, credit_hold_reason,
(case
when credit_hold_reason = 'NP' then 'No payments'
when credit_hold_reason = 'UK' then 'Unknown'
when credit_hold_reason = 'BK' then 'Bankruptcy'
end) as 'Type of credit hold reason',
credit_hold_date, credit_limit
from [database_01].[dbo].[custaddr]
--- from [database_02].[dbo].[custaddr]
--- from [database_03].[dbo].[custaddr]
order by credit_hold_reason asc
Как видите, мне просто нужно изменить имя базы данных или«loop» в некоторой переменной , которая содержит имя базы данных, например,
tables_in_loop = ['[database_01].[dbo].[custaddr]', 'from [database_02].[dbo].[custaddr]', 'from [database_03].[dbo].[custaddr]']
Когда у вас есть имя базы данных, к ним создается соединение и всеэти базы данных находятся на одном сервере.
У меня нет подходов или кодов по этому поводу, потому что это требует более глубоких знаний в SQL, и, к сожалению, я пока не эксперт.Я прочитал следующий пост SQL Server: как получить имя базы данных в качестве параметра в хранимой процедуре , и подход к ее решению выглядит примерно так:
declare @dbname nvarchar(255);
set @dbname = 'db1';
if @dbname = 'db1'
use db1;
else if @dbname = 'db2'
use db2;
, но @dbname
необходимо увеличить до следующей базы данных, и это не указано в ссылке.
Буду признателен за любую помощь или код здесь.