【发布时间】:2017-03-10 01:48:28
【问题描述】:
我使用动态sql创建数据库和表
这是 sql 脚本
DECLARE @DatabaseName VARCHAR(50) = N'test';
EXECUTE ('CREATE DATABASE [' +@DatabaseName+']');
EXECUTE('USE ' + @DatabaseName)
GO
CREATE SCHEMA [Framework]
GO
我得到的错误
Msg 2714, Level 16, State 6, Line 1
There is already an object named 'Framework' in the database.
Msg 2759, Level 16, State 0, Line 1
CREATE SCHEMA failed due to previous errors
.
这个错误是因为 EXECUTE('USE ' + @DatabaseName) 不起作用
我尝试使用
SET @SQL02 = 'USE ['+ convert(nvarchar(50),@DatabaseName) +']; SELECT DB_NAME();'
exec sp_executesql @SQL02
但不工作
我能做什么?
【问题讨论】:
-
标记您正在使用的 dbms。 (也许是 SQL-Server?)
-
我使用的 SQL 版本 2012
-
执行在自己的实例中运行。您应该在同一 EXECUTE 命令中包含所有操作,以便
USE <database>正常工作。 -
另外,在使用
@DatabaseName变量时使用QUOTENAME()。
标签: sql sql-server sql-server-2012 dynamic-sql