T-SQL можно использовать переменную в операторе выбора, чтобы указать базу данных - PullRequest
6 голосов
/ 12 февраля 2010

Есть ли способ сделать что-то подобное без преобразования sql в строку и вызова exec

DECLARE @source_database varvhar(200)
SELECT @source_database = 'wibble'

SELECT * FROM SELECT @source_database.dbo.mytable

Ответы [ 3 ]

3 голосов
/ 12 февраля 2010

Нет. Боюсь, что нет.

Необходимо использовать динамический sql для использования переменной для имени базы данных или столбца.

2 голосов
/ 12 февраля 2010

Только для сохраненных процедур без использования связанного сервера или динамического SQL

DECLARE @myProc  varchar(200)
SELECT @myProc  = 'wibble.dbo.foobar'

EXEC @myProc
0 голосов
/ 12 февраля 2010

Существует еще одна (не обязательно симпатичная) альтернатива:

IF (@source_database = 'wibble')
    USE wibble;
ELSE IF (@source_database = 'wibble2')
    USE wibble2;
ELSE
    RAISERROR(....)

SELECT * FROM dbo.myTable

Если у вас есть какое-то реальное количество баз данных, это может быть утомительно.Но, тем не менее, это вариант.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...