我想检测MS SQL DB中以'NAV'开头的数据库。我使用此代码试了一下:SQL错误 - 关键字'Database'附近的语法不正确
DECLARE @DBName NVARCHAR(MAX);
SET @DBName = (SELECT name FROM master.dbo.sysdatabases where name LIKE '%NAV%');
EXECUTE ('USE' + @DBName);
但我得到的错误信息:
Msg 156, Level 15, State 1, Line 1
Incorrect syntax near the keyword 'Database'.
知道什么是错的呢?
这样做...'declare @sql varchar(4000)=('USE'+ @DBName); print(@sql)',你会发现你至少需要一个空间(假设查询只返回一个结果)。在尝试执行动态SQL之前打印动态SQL总是很好,因此您可以看到实际执行的内容。 – scsimon
您是否在使用'sa'来运行该查询? – Alfabravo
有关SQL Server的动态SQL问题的强制链接:http://www.sommarskog.se/dynamic_sql.html –