Estamos usando o DBeaver Community Edition (v23.2.0.202309041200) como um cliente conectado ao Microsoft SQL Server 2016 (v13.0.5101.9).
O problema ocorre ao executar as instruções SQL abaixo no DBeaver como um script.
declare @option as int = 2;
select @option;
A ação "Executar script SQL", ou pela tecla de atalho do DBeaver Alt+X
, sempre falha na instrução de seleção, com mensagem de erro dizendo SQL Error [137] [S0002]: Must declare the scalar variable "@option".
.
O erro não acontece se destacarmos as duas instruções SQL e seguirmos com a ação "Executar consulta SQL", ou pela tecla de atalho do DBeaver Ctrl+Enter
.
O erro também não ocorre se usarmos o Microsoft SQL Server Management Studio, portanto, não acreditamos que o problema esteja relacionado ao SQL Server.
Nossa pergunta:
Existe alguma maneira de usar variáveis declaradas no DBeaver ao executar um script SQL no MSSQL (Microsoft SQL Server)?
Agradecemos muito quaisquer dicas e sugestões.
Esse é um problema do DBeaver, pois ele tem sua própria maneira de processar scripts SQL em comparação com o SSMS ou o Azure Data Studio.
No DBeaver, cada instrução SQL em um script é executada separadamente e, portanto, qualquer variável declarada em uma instrução não está disponível nas instruções seguintes.
Solução alternativa: use
@set
qual é um comando DBeaver.Nota: Observe que esta abordagem pode não funcionar se você pretende executar seus scripts fora do DBeaver, porque
@set
são:variable_name
específicos do DBeaver e podem não ser reconhecidos por outros clientes SQL ou pelo próprio SQL Server.ref: https://github.com/dbeaver/dbeaver/issues/2244#issuecomment-333441954 e https://stackoverflow.com/a/67193585/1387418