![]() | |
![]() |
| | Thread Tools | Display Modes |
#1
| |||
| |||
|
#2
| |||
| |||
|
|
drop procedure if exists FillDateRange; |
|
hi, i am pretty new in sybase, so excuse if this is a dumb question i dont know why this code does not execute: drop procedure if exists FillDateRange; create procedure FillDateRange() begin declare @dtFirstDay datetime; declare @ii int; declare @iNumDays int; select FIRST_DAY, INT_NUM_OF_DATA_DAYS-1 into dtFirstDay, iNumDays from TEST_DATA where id = 999; insert into DATE_REF (WORK_DATE, IDX) values (makedate(1900, 1), 0); set @ii = -1; while (@ii <= @iNumDays) begin insert into DATE_REF (WORK_DATE, IDX) values (dateadd(day, @ii, dtFirstDay), @ii + 1); set @ii = @ii + 1; end; end; it gives me this error [Error] Script lines: 1-24 ------------------------- SQL Anywhere Error -131: Syntax error near 'begin' on line 19 Msg: 102, Level: 15, State: 0 Line: 0 everything seems to be just right, except for the while; but that is the right syntax i think please help |
#3
| |||
| |||
|
|
hi, i am pretty new in sybase, so excuse if this is a dumb question i dont know why this code does not execute: drop procedure if exists FillDateRange; create procedure FillDateRange() begin declare @dtFirstDay datetime; declare @ii int; declare @iNumDays int; select FIRST_DAY, INT_NUM_OF_DATA_DAYS-1 into dtFirstDay, iNumDays from TEST_DATA where id = 999; insert into DATE_REF (WORK_DATE, IDX) values (makedate(1900, 1), 0); set @ii = -1; while (@ii <= @iNumDays) begin insert into DATE_REF (WORK_DATE, IDX) values (dateadd(day, @ii, dtFirstDay), @ii + 1); set @ii = @ii + 1; end; end; it gives me this error [Error] Script lines: 1-24 ------------------------- SQL Anywhere Error -131: Syntax error near 'begin' on line 19 Msg: 102, Level: 15, State: 0 Line: 0 everything seems to be just right, except for the while; but that is the right syntax i think please help |
#4
| |||
| |||
|
|
The syntax of the WHILE statement is incorrect for Watcom-SQL. Here's the replacement. You could likely eliminate the WHILE loop and use an INSERT ... SELECT together with sa_rowgenerator(). create procedure FillDateRange() begin declare @dtFirstDay datetime; declare @ii int; declare @iNumDays int; select FIRST_DAY, INT_NUM_OF_DATA_DAYS-1 into dtFirstDay, iNumDays from TEST_DATA where id = 999; insert into DATE_REF (WORK_DATE, IDX) values (makedate(1900, 1), 0); set @ii = -1; while (@ii <= @iNumDays) loop insert into DATE_REF (WORK_DATE, IDX) values (dateadd(day, @ii, dtFirstDay), @ii + 1); set @ii = @ii + 1; end loop; end; |
![]() |
| Thread Tools | |
| Display Modes | |
| |