sql - 有没有办法从变量中选择数据库?

标签 sql sql-server dynamic-sql

有没有办法从变量中选择数据库?

Declare @bob as varchar(50);
Set @bob = 'SweetDB';
GO
USE @bob

最佳答案

不幸的是,没有。

除非您可以将批处理的其余部分作为动态 SQL 执行。

使用 execute 动态执行 SQL 将更改 execute 语句范围的上下文,但不会对执行 语句的范围产生持久影响>执行语句来自。

换句话说,这个:

DECLARE @db VARCHAR(100)
SET @db = 'SweetDB'
EXECUTE('use ' + @db)

不会永久设置当前数据库,但如果您像这样更改了上面的代码:

DECLARE @db VARCHAR(100)
SET @db = 'SweetDB'
EXECUTE('use ' + @db + ';select * from sysobjects')
select * from sysobjects

那么这两个查询的结果将会不同(假设您尚未在 SweetDB 中),因为在 execute 中执行的第一个选择正在 SweetDB 中执行,但第二个查询不是在 SweetDB 中执行.

关于sql - 有没有办法从变量中选择数据库?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/937271/

相关文章:

c# - 通过 Entity Framework 提高 SQL Server 中的搜索性能

sql - 为什么稀疏列中的非空值在 SQL Server 2008 中占用额外空间

sql - 如何在 mysql 中查找日期时间行的时间增量?

sql - 修剪字符串的一部分

c# - .NET:如何处理 SQL 查询中可能的空值?

mysql - MySQL 到 SQL Server over WAN 的 ETL 机制

arrays - 静态表中的动态表名与数组列

mysql - 在数组上过滤具有列条件的行

sql - PL/SQL 和 T-SQL 有什么区别?

postgresql - 如何在 PostgreSQL 中克隆记录