Создать имя БД из SELECT - PullRequest
0 голосов
/ 06 июня 2018

Я пытаюсь создать сценарии SQL для перемещения старых данных в отдельную базу данных.У меня сейчас проблема в том, что я хочу назвать базу данных из оператора SELECT.

use DBName;
declare @release varchar(max)
set @release = concat('Release_',(select MetaRevision from metarevision))
select @release

if db_id(@release) is null create database @release

К сожалению, это не работает.Я получаю следующую ошибку:

Incorrect syntax near '@release'

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

Ответы [ 2 ]

0 голосов
/ 06 июня 2018

Вы можете просто сделать это так

declare @release varchar(max)
set @release = concat('Release_','TestOst') //Replace TestOst with your metadata
select @release

if db_id(@release) is null 

declare @SQL nvarchar(max)

SET @SQL = 'create database '+quotename(@release)

exec(@SQL)
0 голосов
/ 06 июня 2018

Спасибо за вашу помощь.Я нашел решение с информацией ta.speot.is и p.campbell .

На будущее это решение:

use DBName;
declare @release varchar(14)
set @release = concat('Release_',(select MetaRevision from metarevision))

declare @quoted varchar(16);
set @quoted =  quotename(@release);

if db_id(@release) is null exec ('create database ' + @quoted)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...