Динамический SQL-запрос из MS SQL в MySQL - PullRequest
0 голосов
/ 29 мая 2011

У меня есть 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 Ответ

0 голосов
/ 29 мая 2011
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.

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

...