有没有办法从变量中选择数据库?
有没有办法从变量中选择数据库?
Declare @bob as varchar(50);
Set @bob = 'SweetDB';
GO
USE @bob
Is there a way to select a database from a variable?
Declare @bob as varchar(50);
Set @bob = 'SweetDB';
GO
USE @bob
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
很不幸的是,不行。
除非您可以将批处理的其余部分作为动态 SQL 执行。
使用
execute
动态执行 SQL 将更改execute
语句范围的上下文,但不会对执行execute< 的范围留下持久影响/code> 声明来自.
换句话说,这:
不会永久设置当前数据库,但是如果您像这样更改了上面的代码:
那么这两个查询的结果将会不同(假设您已经不在 SweetDB 中),因为第一次选择,在
execute
中执行的是在 SweetDB 中执行,但第二个不是。Unfortunately, no.
Unless you can execute the rest of your batch as dynamic SQL.
Using
execute
to dynamically execute SQL will change the context for the scope of theexecute
statement, but will not leave a lasting effect on the scope you execute theexecute
statement from.In other words, this:
Will not set the current database permanently, but if you altered the above code like this:
Then the result of those two queries will be different (assuming you're not in SweetDB already), since the first select, executed inside
execute
is executing in SweetDB, but the second isn't.#TempTables 将跨 GO 保留,
您可以在第一批中创建表,并根据需要在该批或任何后续批次中插入/选择数据。
这是一些示例语法:
#TempTables will presist across GOs
you can create the table in the first batch, insert/select data as necessary in that or any following batch.
here is some sample syntax: