我尝试动态获取数据库名称,但是显示了一些错误。
我尝试过的:
Declare @dbname varchar(40) = (select name from sys.databases where name like '%worksdw2019')
select db_name() as [Database], *
from @dbname.dbo.DimCustomer with (readuncommitted)
最终结果应该是什么样子
select db_name() as [Database], *
from AdventureWorksdw2019.dbo.dimcustomer
以下是我遇到的错误:
消息102,级别15,状态1,行3
.""附近的语法不正确。
消息319,级别15,状态1,行3
关键字"with"附近的语法不正确。如果此语句是公用表表达式、xmlnamespaces子句或更改跟踪上下文子句,则前一语句必须以分号结尾。
2条答案
按热度按时间a11xaf1n1#
您不能参数化数据库名称,因此需要动态SQL。
呃,为什么?
92dk7w1h2#
您写入了无效的SQL。
在SQL Server中,您不能使用这样的变量。如果数据库名称将是变量,如示例中所示,则需要使用
EXEC
命令执行动态SQL,如下例所示: