有一种方法来选择从一个可变数据库?

Declare @bob as varchar(50);
Set @bob = 'SweetDB';
GO
USE @bob
有帮助吗?

解决方案

不幸的是,没有

除非你能执行批处理动态SQL的其余部分。

使用execute动态执行SQL将更改execute声明的范围的范围内,但不会离开你执行从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正在执行,但第二个是不

其他提示

declare @NewDB varchar(50)
set @NewDB = 'NewDB'
execute('use ' + @NewDB)

<强> #TempTables将跨越GOS presist

可以创建在第一批,插入/选择在必要或任何以下的批处理数据的表。

这里是一些示例语法:

CREATE TABLE #YourTableName
(
     col1   int         not null   primary key   identity(1,1)
    ,col2   varchar(10)
)
许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top