Извините, я не совсем понимаю , в чем цель этой процедуры, но - если «напоминание» вам о синтаксисе Oracle помогает, вот, пожалуйста.Обратите внимание, что я не говорю на MySQL, поэтому некоторые мои сомнения наверняка зависят от этого.
Несколько замечаний:
- должно быть
:=
, а не : =
, например vdate := monday;
- комментарий помечен двумя последовательными дефисами
--
, а не только одним -
- Я удалил несколько столбцов (из таблицы
event
), когда вы помещаете null
в любом случае, так что ... нет смысла использовать их здесь - строка № 18 (описана в строке № 21): я понятия не имею, что вы хотели бы получить в результате.Если возможно, опубликуйте пример, я (или кто-то еще) мог бы помочь
- строка # 28: кажется, что вы добавляете 31 день (что больше похоже на месяц, чем на день; вот почему я использовал
add_months
(и добавил 1 месяц). Если вы хотите добавить один день, то vDate := vDate + 1
SQL> create table event (col date);
Table created.
SQL> create or replace procedure kalender_erstellen (monday date)
2 is
3 v1 number (10) default 5;
4 v2 number (10) default 1;
5 vdate date;
6 begin
7 vdate := monday;
8
9 while v1 > 0 loop -- goes through the days (5 days)
10
11 v2 := 1; -- Reset the appointments
12
13 while v2 < 20 loop -- Goes through the appointments per day (20 appointments)
14 insert into event
15 values (
16 -- NULL, NULL, NULL, NULL, NULL,
17 -- TO_DATE (MINUTE, (30 * v2), TIMESTAMP ('07: 30: 00 ')));
18 vdate + 30 / (24 * 60)
19 );
20
21 -- First, the date is converted into a TimeStamp. Subsequently, 30 minutes are
22 -- expected per run.
23
24 v2 := v2 + 1; -- Counter for the dates
25 end loop;
26
27 -- vDate := (vDate, INTERVAL '31' DAY); -- Add a day to the day
28 vdate := add_months(vdate, 1); -- "31 day" looks more like a "month" than a "day"
29 v1 := v1 - 1; -- Counter for the days
30 end loop;
31 end;
32 /
Procedure created.
Тестирование:
SQL> exec kalender_erstellen(date '2019-06-17');
PL/SQL procedure successfully completed.
SQL> alter session set nls_date_format = 'dd.mm.yyyy hh24:mi:ss';
Session altered.
SQL> select * from event where rownum < 4;
COL
-------------------
17.06.2019 00:30:00
17.06.2019 00:30:00
17.06.2019 00:30:00
SQL>
Видимо, что-то , но результат, вероятно, неправильный.