2014-03-03 7 views
0

Когда я пытаюсь создать процедуру хранения с помощью следующего кода, я получаю ошибки.Синтаксис Ошибки при создании хранимой процедуры

 create procedure Currentmonth(
     @Completeddatekey varchar(20)) 
     as 
     begin 

Получение текущей даты и форматирования

  Declare @currentdate varchar(30) 
     set @currentdate = convert(Varchar(20), getdate()-1, 101) 
      print @currentdate 

Получение DayOfMonth и EndofMonth от DimDate

 Declare @dayofmonth int 
     Declare @endofmonth varchar(20) 
     select @dayofmonth = DayofMonth, @endofmonth = EndofMonthDateKey from DimDate 
     where datekey = @currentdate 

Получение HierMonthEndKey

 declare @hiermonthendkey int 
     select @hiermonthendkey = MAX(HierMonthEndKey) from DimHospiceHiearchy 
     where HierMonthEndKey <= @currentdate+1 

Declare @day

For Loop

 Declare @i int = 0 
     declare @startdate varchar(20) 
     select @startdate = CAST(CAST(YEAR(convert(Varchar(20), getdate()-1, 101)) AS  VARCHAR(4)) 
    + '/' + CAST(MONTH(convert(Varchar(20), getdate()-1, 101)) AS VARCHAR(2)) + '/01' AS DATETIME)+1 

     While @i <[email protected] 
     (

     set @startdate = @[email protected] 
     Call MA010103(@completeddatekey,@hiermonthendkey) 
     set @i = @i+1 
     ) 

     end 

Я получаю эти ошибки, когда я пытаюсь создать вышеописанную процедуру магазина

Msg 156, Level 15, State 1, процедура Currentmonth, строка 34 Неправильный синтаксис рядом с ключевое слово 'set'. Msg 102, уровень 15, состояние 1, процедура Currentmonth, строка 35 Неверный синтаксис рядом с 'Call'. Msg 102, уровень 15, состояние 1, процедура Currentmonth, строка 37 Неверный синтаксис около ')'.

ответ

2

Ваш WHILE цикл должен выглядеть:

While @i <[email protected] 
begin 
    set @startdate = @[email protected] 
    exec MA010103 @completeddatekey, @hiermonthendkey 
    set @i = @i+1 
end 
  1. Вы должны использовать BEGIN и END, а не квадратные скобки.

  2. Для выполнения хранимой процедуры используйте EXECUTE (или EXEC) и не используйте скобки для параметров.

Смежные вопросы