Tsql 在Azure SQL Server中使用分号时出错

Tsql 在Azure SQL Server中使用分号时出错,tsql,azure-sql-database,dbeaver,Tsql,Azure Sql Database,Dbeaver,我正在使用兼容级别为120的Microsoft SQL Azure(RTM)-12.0.2000.8 2017年11月29日09:37:51版权所有(C)2017 Microsoft Corporation,运行此查询时 ALTER PROCEDURE SPCreateSession3 @a int, @b int AS select count(*) as a from events where IDevent > @a; select count(*) as b from sessio

我正在使用兼容级别为120的
Microsoft SQL Azure(RTM)-12.0.2000.8 2017年11月29日09:37:51版权所有(C)2017 Microsoft Corporation
,运行此查询时

ALTER PROCEDURE SPCreateSession3
@a int,
@b int
AS
select count(*) as a from events where IDevent > @a;
select count(*) as b from sessions where IDsession > @b;
GO
exec SPCreateSession3 1, 1
它给了我一个错误
必须声明标量变量@b
。如果没有分号,它可以正常工作。看起来像是
是一种
GO
命令。那么为什么有很多人建议,那"代码",永远不会导致任何问题。我需要分号,因为我实际使用的是MERGE命令,
是必需的。另外,如果我将查询包装在BEGIN块中

ALTER PROCEDURE SPCreateSession3
@a int,
@b int
AS
BEGIN
select count(*) as a from events where IDevent > @a;
select count(*) as b from sessions where IDsession > @b;
END
GO
exec SPCreateSession3 1, 1
然后,sql server说附近的
语法不正确。又是一个问题,因为分号。是我遗漏了什么,还是分号真的是罪魁祸首?当我需要使用分号而不出现这两个错误时,有什么解决方法


快照:

这不是Azure问题。T-SQL中的分号结束批处理(范围)。分号之后,您将开始一个新的批处理(范围),并且在上一批处理中声明的任何变量都不再有效。在这方面,半彩色与GO语句的作用相同;它结束了一批语句。

作为此问题的解决方法,请使用Microsoft SQL Operations Studio作为Linux和MAC的替代查询编辑器。从下载它。Operations Studio不会出现此问题


正如您所看到的,用户目前要求将SQLServerManagementStudio打造成一个跨平台的工具。目前,您可以使用Microsoft SQL Operations Studio。

我在azure SQL中没有EXP。。。有没有可以使用的服务包?@TT。不知道。但这里有些东西我不熟悉你使用的编辑器。如果您有权访问windows,则可以安装SSM,连接到Azure并检查代码是否正常工作。如果不是,那么我们可以确定这是一个Azure bug,您甚至可以创建一个关于它的连接票证。如果它工作-那么它将是编辑器和一些语法检查,在执行查询之前执行。请使用SQL Operations Studio。从下面的URL下载它@如果你愿意的话,你可以加上这句话作为未来人们的答案,否则我会自己回答,因为更换编辑很有效。不完全是这样。在其他编辑器(如VS代码)中也存在同样的问题