2013-11-28 3 views
1

я могу пойти, как этотКак выбрать базу данных динамически

USE SELECT databasename from databasenametable 

или что-то подобное?

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

ответ

2

Если вы используете SQL Server, USE оператор должен получить явное значение для имени базы данных:

USE [databasename] 

Если вы настаиваете делать это динамически, вы можете использовать Dynamic Sql:

DECLARE @db AS NVARCHAR(258); 
SET @db = QUOTENAME(N'Pubs'); -- put whatever you want here.. 
EXEC(N'USE ' + @db); 
GO 
+0

поэтому я не могу сделать то, что я прошу. я получил кучу db, и я знаю, какой из них я хочу использовать на основе запроса. Я хочу поместить этот запрос в мой оператор использования, а не дать ему явное значение – dwarf

+0

@ user2070677 - см. мое редактирование –

0

Если вам нужно только выполнить одно заявление в другой базе данных, другой альтернативы может быть что-то вроде:

declare @sql nvarchar(500) 
declare @yourDatabaseName nvarchar(50) = 'junk' 
declare @yourQuery NVARCHAR(200) = 'select * from someTable' 
set @sql = @yourDatabaseName + '..sp_executesql N''' + @yourQuery + '''' 
EXEC (@sql) 
Смежные вопросы