Есть ли способ сделать что-то вроде этого, не преобразовывая sql в строку и вызывая должностное лицо
DECLARE @source_database varvhar(200)
SELECT @source_database = 'wibble'
SELECT * FROM SELECT @source_database.dbo.mytable
По одному приложению для каждого экрана/ subdomain.heroku.com.
-121--2561257- В C # выражение в виде "a" + b + "c"
оптимизируется компилятором в String.Concat ("a", b ", c")
, чтобы не получить промежуточные строки. Это было бы эффективнее, чем StringBuilder.
No. Боюсь, что нет.
Необходимо использовать динамический sql, чтобы использовать переменную для имени базы данных или столбца.
Только для сохраненных процессов без использования связанного сервера или динамического SQL
DECLARE @myProc varchar(200)
SELECT @myProc = 'wibble.dbo.foobar'
EXEC @myProc
Есть другая (не обязательно красивая) альтернатива:
IF (@source_database = 'wibble')
USE wibble;
ELSE IF (@source_database = 'wibble2')
USE wibble2;
ELSE
RAISERROR(....)
SELECT * FROM dbo.myTable
Если у вас есть реальное количество баз данных, это может быть утомительно. Но, тем не менее, это вариант.