piszę procedurę, która chce aby dzieliła mi miesiąc na tygodnie w następujący sposób:

CREATE PROCEDURE RAPORTY_CO_TYDZIEN (IN start_date datetime, IN end_date datetime, out WEEKCOUNT int, out magic int) BEGIN SET @start_date = cast('2015-01-01 00:00:00' AS datetime); SET @end_date = cast('2025-01-01 00:00:00' AS datetime); SET @WEEKCOUNT int; SET @magic int; /* DECLARE @startDate datetime='01/01/2015' */ /* DECLARE @endDate datetime='01/01/2025' */ /* DECLARE @WEEKCOUNT int;*/ /* DECLARE @magic int;*/ SELECT @WEEKCOUNT = Date(week,@startDate,@endDate) SELECT @magic = case when @WEEKCOUNT<8 then @WEEKCOUNT else (month(@endDate)-month(@startDate))+1 end WITH test AS SELECT 1 AS weekcount, CASE WHEN @WEEKCOUNT < 8 THEN DATEADD(dd, -(DATEPART(dw, @startDate))+1, @startDate) ELSE DATEADD(dd, -(DAY(@startDate)-1), @startDate) END CASE WHEN @WEEKCOUNT < 8 THEN DATEADD(dd, 7-(DATEPART(dw, @startDate))+1, @startDate) else DATEADD(s,-1,DATEADD(mm, DATEDIFF(m,0,@startDate)+1,0)) end UNION ALL SELECT a.weekcount+1 AS weekcount, CASE WHEN @WEEKCOUNT < 8 THEN DATEADD(dd, -(DATEPART(dw, @startDate+(7*(a.weekcount+1))))+2, @startDate+(7*(a.weekcount+1))) ELSE DATEADD(dd, -(DAY(@startDate+(30*(a.weekcount+1)))-1), @startDate+(30*(a.weekcount+1))) END CASE WHEN @WEEKCOUNT < 8 THEN DATEADD(dd, 7-(DATEPART(dw, @startDate+(7*(a.weekcount+1))))+1, @startDate+(7*(a.weekcount+1))) else DATEADD(s,-1,DATEADD(mm, DATEDIFF(m,0,@startDate+(30*(a.weekcount+1)))+1,0)) end FROM CTESplit a WHERE (a.weekcount+1)<=@magic SELECT * FROM test END
dawno nie siedziałem w mysql, sądzę, że robię wszystko ok, ale cały czas mam problem z deklaracją, googlowałem na tematu erroru, który mi wyskakuje:
Zapytanie SQL: CREATE PROCEDURE RAPORTY_CO_TYDZIEN (IN start_date datetime, IN end_date datetime, out WEEKCOUNT int, out magic int) BEGIN DECLARE @start_date = cast('2015-01-01 00:00:00' AS datetime) MySQL zwrócił komunikat: Dokumentacja #1064 - You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near '@start_date = cast('2015-01-01 00:00:00' as datetime)' at line 5
i w tym momencie stanąłem i nie wiem jak rozwiązać ten problem..
Z góry dziękuję za każdą wskazówkę.