【发布时间】:2010-10-30 13:14:50
【问题描述】:
有没有办法从变量中选择数据库?
Declare @bob as varchar(50);
Set @bob = 'SweetDB';
GO
USE @bob
【问题讨论】:
标签: sql sql-server dynamic-sql
有没有办法从变量中选择数据库?
Declare @bob as varchar(50);
Set @bob = 'SweetDB';
GO
USE @bob
【问题讨论】:
标签: sql sql-server dynamic-sql
#TempTables 将持续存在于 GO 中
您可以在第一批中创建表,在该批或任何后续批中根据需要插入/选择数据。
这里是一些示例语法:
CREATE TABLE #YourTableName
(
col1 int not null primary key identity(1,1)
,col2 varchar(10)
)
【讨论】:
很遗憾,没有。
除非您可以将批处理的其余部分作为动态 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)
【讨论】: