Динамический 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.
Наконец, я спрашиваю, почему вы используете для этого отдельные базы данных и таблицы. Разве вы не можете кодировать то, что вам нужно в данных, вместо того, чтобы помещать данные в разные контейнеры?