Длинный ответ: номер строки отсчитывается от CREATE PROCEDURE
оператора, плюс любые пустые строки или строки комментариев, которые могли быть над ним, когда вы действительно запускали CREATE
оператор, но не считая никаких строк перед GO
оператором ...
Я обнаружил, что намного проще сделать сохраненный процесс, чтобы поиграть с ним, чтобы подтвердить:
GO
-- =============================================
-- Author: <Author,,Name>
-- Create date: <Create Date,,>
-- Description: <Description,,>
-- =============================================
CREATE PROCEDURE ErrorTesting
-- Add the parameters for the stored procedure here
AS
BEGIN
-- SET NOCOUNT ON added to prevent extra result sets from
-- interfering with SELECT statements.
SET NOCOUNT ON;
-- Insert statements for procedure here
SELECT 1/0
END
GO
После того, как вы создали его, вы можете переключиться на него ALTER PROCEDURE
и добавить несколько пустых строк над комментариями, а также над и под первымGO
оператором, чтобы увидеть эффект.
Одна очень странная вещь, которую я заметил, заключалась в том, что мне приходилось запускать EXEC ErrorTesting
в новом окне запроса вместо того, чтобы выделять его в нижней части того же окна и запускать… Когда я это делал, номера строк продолжали расти! Не знаю, почему это произошло ...