我正在使用Microsoft SQL Azure (RTM) - 12.0.2000.8 Nov 29 2017 09:37:51 Copyright (C) 2017 Microsoft Corporation
compatibilty_level=120 并且当我运行此查询时
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
它给了我错误Must declare the scalar variable @b
。没有分号,它工作正常。看起来那;
是某种GO
命令。那么为什么很多人在这里建议,这;
永远不会造成任何问题。我需要分号,因为我在现实中使用 MERGE 命令,这;
是必要的。另外,如果我将查询包装在 BEGIN Block 中,例如
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 说incorrect syntax near ;
. 由于分号又是一个问题。我错过了什么或分号真的应该归咎于此吗?当我需要使用分号而不会出现这两个错误时,有什么解决方法?