有没有办法从变量中选择数据库?
Declare @bob as varchar(50);
Set @bob = 'SweetDB';
GO
USE @bob
有没有办法从变量中选择数据库?
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 将存在于 GO 中
您可以在第一批中创建表,在该批或任何后续批中根据需要插入/选择数据。
这是一些示例语法:
CREATE TABLE #YourTableName
(
col1 int not null primary key identity(1,1)
,col2 varchar(10)
)