有没有办法从变量中选择数据库?
Declare @bob as varchar(50);
Set @bob = 'SweetDB';
GO
USE @bob
答案 0 :(得分:9)
不幸的是,没有。
除非您可以将其余批处理作为动态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
内执行的第一个select在SweetDB中执行,但第二个不是。
答案 1 :(得分:0)
declare @NewDB varchar(50)
set @NewDB = 'NewDB'
execute('use ' + @NewDB)
答案 2 :(得分:0)
#TempTables将坚持GOs
您可以在第一批中创建表,根据需要在该批次或任何后续批次中插入/选择数据。
这里有一些示例语法:
CREATE TABLE #YourTableName
(
col1 int not null primary key identity(1,1)
,col2 varchar(10)
)