sql-server - 想在 SQL Server 中使用变量动态更改数据库,怎么做?
问题描述
我正在尝试使用变量动态更改数据库,但无法做到。以下是脚本
set @query='Use {DBNAME}'
DECLARE @SQL_SCRIPT VARCHAR(MAX)
SET @SQL_SCRIPT = REPLACE(@query, '{DBNAME}', @DatabaseName)
EXECUTE (@SQL_SCRIPT)
在这个脚本之前我有变量@DatabaseName 设置了不同的数据库名称
解决方案
您的脚本没有任何问题。正在为数据库设置新上下文,EXECUTE
但您还需要将其他代码附加到动态 T-SQL 语句中。
DECLARE @SQL_SCRIPT VARCHAR(MAX)
DECLARE @DatabaseName SYSNAME
DECLARE @query NVARCHAR(MAX)
SET @DatabaseName = 'master'
set @query='Use {DBNAME}; select db_Name();'
SET @SQL_SCRIPT = REPLACE(@query, '{DBNAME}', @DatabaseName)
EXECUTE (@SQL_SCRIPT);
这会给你master
。因此,您可以更改上下文,只需在同一 T-SQL 语句中添加其余代码即可。
此外,您不能使用GO
in EXECUTE
/ sp_executesql
。
推荐阅读
- html - 如何在不移动文本的情况下将图像放在页面右侧
- apache-kafka - 为什么重新创建具有相同 groupId 的消费者组后偏移量不重置为 0
- html - 如何为 HTML/CSS 使用“带有 BEM 的原子设计”方法?
- java - Drools 7 是否必须在单独的 JVM 中运行,即持有规则的 KIE 服务器?
- css - 实现 Bootstrap 5 多级下拉垂直导航栏的干净方法是什么?
- html - HTML5 中的表单“action”属性究竟是如何将数据发送到实时网站的后端的?
- go - 更新 opentelemetry prometheus 导出器中的标签
- mysql - 由于访问限制,LOAD DATA LOCAL INFILE 文件请求被拒绝
- rust - Rust:有没有办法使用 map 来缩短这个 if/else 代码?
- python - Think Python(如何像计算机科学家一样思考)——练习 8.4 Duckling 问题