Sqlserver:create database query中的变量数据库名称是抛出错误

时间:2013-11-14 09:31:03

标签: sql-server-2008

 Use master 
    GO
    Declare @dbName As VARCHAR(50)
    SET @dbName = 'TestDB'
    CREATE DATABASE @dbName

上面sqlserver是脚本给我错误。为什么呢?

Msg 102, Level 15, State 1, Line 3
Incorrect syntax near '@dbName'.

2 个答案:

答案 0 :(得分:1)

您不能将动态sql和ddl用作混合。 使用动态sql。 试试这段代码:

Use master 
    GO
    Declare @dbName As VARCHAR(50) 
    DECLARE @Q VARCHAR(MAX)
    SET @dbName = 'TestDB'
    SET @Q='CREATE DATABASE '+ @dbName
    EXEC(@Q)

答案 1 :(得分:0)

如果因为您传递VARCHAR类型并创建数据库而无法工作,则它需要一个对象而不是一个Varchar。否则,您需要将整个查询作为字符串传递给执行;

Declare @dbName As VARCHAR(50) = 'TestDB'
DECLARE @Creation VARCHAR(50) ='CREATE DATABASE '+ @dbName 
EXEC(@Creation)