T-SQL - это возможный использовать переменную в избранном операторе для определения базы данных

Есть ли способ сделать что-то вроде этого, не преобразовывая sql в строку и вызывая должностное лицо

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

SELECT * FROM SELECT @source_database.dbo.mytable
6
задан Daniel Vassallo 12 February 2010 в 10:02
поделиться

3 ответа

По одному приложению для каждого экрана/ subdomain.heroku.com.

-121--2561257-

В C # выражение в виде "a" + b + "c" оптимизируется компилятором в String.Concat ("a", b ", c") , чтобы не получить промежуточные строки. Это было бы эффективнее, чем StringBuilder.

-121--3808365-

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

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

3
ответ дан 17 December 2019 в 04:46
поделиться

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

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

EXEC @myProc
2
ответ дан 17 December 2019 в 04:46
поделиться

Есть другая (не обязательно красивая) альтернатива:

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

SELECT * FROM dbo.myTable

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

0
ответ дан 17 December 2019 в 04:46
поделиться
Другие вопросы по тегам:

Похожие вопросы: