【发布时间】:2018-06-06 08:25:44
【问题描述】:
我正在尝试创建 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'
有没有办法从 Select 语句中命名数据库?
【问题讨论】:
-
exec ('create database ' + quotename(@release))或类似的东西。 -
解释原因:
create database的参数是 name,而不是 string/varchar。换句话说,create database XYZ是正确的,而create database 'XYZ'不是 - 这就是为什么也不允许使用create database @release. -
as @ta.speot.is 建议您为此需要动态 SQL
-
有解决方法吗? 'quotename' 不起作用。
-
declare @release nvarchar(10) = 'abc'; declare @sql nvarchar(100) = 'create database ' + quotename(@release); exec (@sql);或类似的东西。
标签: sql-server tsql