Динамический SQL-запрос из MS SQL в MySQL

У меня есть 2 базы данных один на MS SQL и другой на Mysql. Я написал несколько сценариев sql, которые извлекают данные из Mysql и вставляют в MS SQL. Для этого я настроил подключение драйвера устройства и связанный сервер на MS SQL, и эти сценарии выполняются на MS SQL. Скрипты просты и имеют только операторы select. Теперь мне нужно написать динамические сценарии для извлечения данных из MySQL на основе некоторых параметров. Ниже приведен пример запроса для получения данных из БД "stagedb_ie", где, например, обозначает Ирландию.

select * from openquery(stagedb_ie, 'select * from stagedb_ie.aol_center')

В mysql есть другие базы данных с суффиксом кода страны к stagedb в качестве имени. Теперь я хочу передать этот код страны в качестве параметра для запроса и получения данных. например

declare @stagedb_country varchar(20)
set @stagedb_country = 'stagedb_ie'
select * from openquery(@stagedb_country, 'select * from '+ @stagedb_country +'.aol_center')

Но этот запрос не работает. любое предложение?

1 ответ

Решение
declare @stagedb_country varchar(20),
   @SQL nvarchar(max);
set @stagedb_country = 'stagedb_ie';
set @SQL = 'select * from openquery(' + @stagedb_country
   + ', ''select * from ' + @stagedb_country + '.aol_center'')';
exec (@SQL);

Имейте в виду, что динамический SQL в SP выполняется с разрешениями вызывающей стороны, а не владельца SP.

Наконец, я спрашиваю, почему вы используете для этого отдельные базы данных и таблицы. Разве вы не можете кодировать то, что вам нужно в данных, вместо того, чтобы помещать данные в разные контейнеры?

Другие вопросы по тегам