首页 > 解决方案 > 想在 SQL Server 中使用变量动态更改数据库,怎么做?

问题描述

我正在尝试使用变量动态更改数据库,但无法做到。以下是脚本

set @query='Use {DBNAME}'

DECLARE @SQL_SCRIPT VARCHAR(MAX)

SET @SQL_SCRIPT = REPLACE(@query, '{DBNAME}', @DatabaseName)
EXECUTE (@SQL_SCRIPT)

在这个脚本之前我有变量@DatabaseName 设置了不同的数据库名称

标签: sql-server

解决方案


您的脚本没有任何问题。正在为数据库设置新上下文,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 语句中添加其余代码即可。

此外,您不能使用GOin EXECUTE/ sp_executesql


推荐阅读