我使用动态 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
但不工作
我可以做什么?
最佳答案
DECLARE @Query VARCHAR(200);
SET @Query = CONCAT('USE ', QUOTENAME('<MyDatabase>'), '; ', 'select DB_NAME();');
EXECUTE (@Query);
这将返回
<MyDatabase>
只要你保持在一个EXECUTE
.
关于sql - 动态 SQL "USE [DB]"不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40283549/