문제

When I try to create the store procedure with following code, I am getting errors.

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

Getting the current date and formatting it

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

Getting DayofMonth and EndofMonth from DimDate

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

Getting 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 <=@dayofmonth
       (

         set @startdate = @startdate+@i
       Call MA010103(@completeddatekey,@hiermonthendkey)
        set @i = @i+1
       )

         end

I am getting these errors when I try to create the above store procedure

Msg 156, Level 15, State 1, Procedure Currentmonth, Line 34 Incorrect syntax near the keyword 'set'. Msg 102, Level 15, State 1, Procedure Currentmonth, Line 35 Incorrect syntax near 'Call'. Msg 102, Level 15, State 1, Procedure Currentmonth, Line 37 Incorrect syntax near ')'.

도움이 되었습니까?

해결책

Your WHILE loop should look like that:

While @i <=@dayofmonth
begin
    set @startdate = @startdate+@i
    exec MA010103 @completeddatekey, @hiermonthendkey 
    set @i = @i+1
end
  1. You need to use BEGIN and END, not brackets.

  2. To execute a stored proc, use EXECUTE (or EXEC) and do not use parenthesis for parameters.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top