sql - 动态 SQL "USE [DB]"不起作用

标签 sql sql-server sql-server-2012 dynamic-sql

我使用动态 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/

相关文章:

mysql - 如何纠正这个 ('Cannot delete or update a parent row' )?

sql-server - 合计投票结果

sql-server - SQL Server 在 nvarchar 字符串内部搜索时使用高 CPU

sql - UPDATE FROM 不适用于同一行的多次更新

sql - 1 个单表发生死锁,2 个用户执行简单语句

java - 如何在 Datagrip 中将 Java SQL 字符串转换为 SQL?

sql - 如何从数据 View 中忽略与 'Arithmetic Overflow' 相关的错误?

sql - 在 hive 中查找一个月的最后一天

Python PYDOBC 使用参数插入 SQL Server DB

sql-server - CONCAT 函数中有超过 2 列