Есть ли способ выбрать базу данных из переменной?

StackOverflow https://stackoverflow.com/questions/937271

  •  06-09-2019
  •  | 
  •  

Вопрос

Есть ли способ выбрать базу данных из переменной?

Declare @bob as varchar(50);
Set @bob = 'SweetDB';
GO
USE @bob
Это было полезно?

Решение

К сожалению, нет.

Если только вы не сможете выполнить остальную часть вашего пакета как динамический SQL.

Используя execute для динамического выполнения SQL изменится контекст области действия execute заявление, но не окажет длительного влияния на область, в которой вы выполняете execute заявление от.

Другими словами, это:

DECLARE @db VARCHAR(100)
SET @db = 'SweetDB'
EXECUTE('use ' + @db)

Текущая база данных не будет установлена постоянно, но если вы изменили приведенный выше код следующим образом:

DECLARE @db VARCHAR(100)
SET @db = 'SweetDB'
EXECUTE('use ' + @db + ';select * from sysobjects')
select * from sysobjects

Тогда результат этих двух запросов будет отличаться (при условии, что вы еще не в SweetDB), поскольку первый select, выполняемый внутри execute выполняется в SweetDB, но второй - нет.

Другие советы

declare @NewDB varchar(50)
set @NewDB = 'NewDB'
execute('use ' + @NewDB)

#Соблазны будут присутствовать во всех государственных учреждениях

вы можете создать таблицу в первом пакете, вставить / выбрать данные по мере необходимости в этом или любом следующем пакете.

вот несколько примеров синтаксиса:

CREATE TABLE #YourTableName
(
     col1   int         not null   primary key   identity(1,1)
    ,col2   varchar(10)
)
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top