MS SQL Incorrect syntax near ‘END’ ошибка при создании процедуры

При создании пустой процедуры или процедуры содержащей только комментарии, при выполнении скрипта возникает ошибка Incorrect syntax near ‘END’. Процедура создается в MS SQL 2005 после не продолжительных экспериментов оказалось, что процедура, в которой нет ни одного оператора просто не принимается в MS SQL 2005. Это вполне логично, однако иногда вводит в тупик такой вот не  понятной ошибкой.

Вот так не отрабатывает скрипт выдает ошибку Incorrect syntax near ‘END’.


IF  EXISTS (SELECT * FROM sys.objects
  WHERE object_id = OBJECT_ID(N'[up_MyProc]')
  AND type in (N'P', N'PC'))

DROP PROCEDURE [dbo].[up_MyProc]

go

 

create procedure [dbo].[up_MyProc] @Param1 INT = 0,

@Param2 INT = 0,

@Param3 INT = 0

AS

BEGIN

END

IF  EXISTS (SELECT * FROM sys.objects
  WHERE object_id = OBJECT_ID(N'[up_MyProc]')
  AND type in (N'P', N'PC'))

DROP PROCEDURE [dbo].[up_MyProc]

go

create procedure [dbo].[up_MyProc] @Param1 INT = 0,

@Param2 INT = 0,

@Param3 INT = 0

AS

BEGIN

/*

My Comment

*/

END

А вот так отрабатывает без ошибок


IF  EXISTS (SELECT * FROM sys.objects
  WHERE object_id = OBJECT_ID(N'[up_MyProc]')
  AND type in (N'P', N'PC'))

DROP PROCEDURE [dbo].[up_MyProc]

go

 

create procedure [dbo].[up_MyProc] @Param1 INT = 0,

@Param2 INT = 0,

@Param3 INT = 0

AS

BEGIN

  PRINT '!';

END

Как оказалось MS SQL 2005 в принципе плохо реагирует на блоки BEGIN END, которые не содержат в
себе никаких команд. Т.е. пустые или заполнены комментариями.

Share

Tags: ,

Leave a Reply