我们使用 DBeaver Community Edition (v23.2.0.202309041200) 作为连接 Microsoft SQL Server 2016 (v13.0.5101.9) 的客户端。
当在 DBeaver 中作为脚本执行以下 SQL 语句时,会出现此问题。
declare @option as int = 2;
select @option;
“执行 SQL 脚本”操作或通过 DBeaver 热键Alt+X
在选择语句上总是失败,并显示错误消息SQL Error [137] [S0002]: Must declare the scalar variable "@option".
。
如果我们突出显示这两个 SQL 语句并执行“执行 SQL 查询”操作,或者使用 DBeaver 热键,则不会发生该错误Ctrl+Enter
。
如果我们使用 Microsoft SQL Server Management Studio,也不会发生该错误,因此我们不认为该问题与 SQL Server 有关。
我们的问题:
在 MSSQL (Microsoft SQL Server) 上执行 SQL 脚本时,有什么方法可以使用 DBeaver 中声明的变量吗?
我们非常感谢任何提示和建议。
这是 DBeaver 的问题,因为与 SSMS 或 Azure data studio 相比,它有自己的处理 sql 脚本的方式。
在 DBeaver 中,脚本中的每条 SQL 语句都是单独执行的,因此,在一条语句中声明的任何变量在后续语句中不可用。
解决方法:使用
@set
DBeaver 命令。注意:请注意,如果您打算在 DBeaver 之外运行脚本,则此方法可能不起作用,因为
@set
和:variable_name
是特定于 DBeaver 的,其他 SQL 客户端或 SQL Server 本身可能无法识别。参考:https://github.com/dbeaver/dbeaver/issues/2244#issuecomment-333441954和https://stackoverflow.com/a/67193585/1387418