SQL 错误 - 关键字 'Database' 附近的语法不正确
SQL error - Incorrect syntax near the keyword 'Database'
我想在 MS SQL 数据库中检测以“NAV”开头的数据库。我用这段代码试过了:
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'.
知道哪里出了问题吗?
在 USE 后加上 space 并在数据库名称两边加上括号:
DECLARE @DBName NVARCHAR(MAX);
SET @DBName = (SELECT name FROM master.dbo.sysdatabases where name LIKE '%NAV%');
EXECUTE ('USE [' + @DBName + ']');
我不确定错误消息中的关键字数据库,但我确实发现了问题:
您连接 USE
和没有 space 的数据库名称:USENAV01
不起作用。你应该使用 'USE ' + QUOTENAME(@DBName)
.
其次,我不知道意图是什么,但是如果您执行 EXECUTE ('USE ' + @DBName);
后跟其他(动态)查询,则将在您的 current[=24 上执行以下查询=] 连接。换句话说,USE XXX
对于以下查询无关紧要。
第三,正如杰西在下面的评论中提到的;如果您有多个带有 name like '%NAV%'
的数据库(您的问题表明),则您的代码仅针对其中一个数据库执行。如果没有 order by
,将无法预测哪一个。如果要对所有相关数据库执行代码,则必须循环遍历它们。
我想在 MS SQL 数据库中检测以“NAV”开头的数据库。我用这段代码试过了:
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'.
知道哪里出了问题吗?
在 USE 后加上 space 并在数据库名称两边加上括号:
DECLARE @DBName NVARCHAR(MAX);
SET @DBName = (SELECT name FROM master.dbo.sysdatabases where name LIKE '%NAV%');
EXECUTE ('USE [' + @DBName + ']');
我不确定错误消息中的关键字数据库,但我确实发现了问题:
您连接 USE
和没有 space 的数据库名称:USENAV01
不起作用。你应该使用 'USE ' + QUOTENAME(@DBName)
.
其次,我不知道意图是什么,但是如果您执行 EXECUTE ('USE ' + @DBName);
后跟其他(动态)查询,则将在您的 current[=24 上执行以下查询=] 连接。换句话说,USE XXX
对于以下查询无关紧要。
第三,正如杰西在下面的评论中提到的;如果您有多个带有 name like '%NAV%'
的数据库(您的问题表明),则您的代码仅针对其中一个数据库执行。如果没有 order by
,将无法预测哪一个。如果要对所有相关数据库执行代码,则必须循环遍历它们。