SQLize Online / PHPize Online  /  SQLtest Online

A A A
Share      Blog   Popular
Copy Format Clear
/* Решение заданий по PL/SQL Порядин А.В. 13.02.2024 */ --1)Создание таблицы TBL1 create table TBL1 ( ORG_ID number(19), --Идентификатор ORG_NAME varchar2(240), --Имя организации COMMENTS varchar2(240) --Комментарий ); --2)Вставка данных в таблицу TBL1 insert into TBL1 values (1, 'Работа', ''); insert into TBL1 values (2, 'Загс', ''); insert into TBL1 values (3, 'Университет', ''); insert into TBL1 values (4, 'Магазин', ''); insert into TBL1 values (6, 'Хобби', ''); --3)Создание таблицы TBL2 create table TBL2 ( EVENT_ID number(19), --Идентификатор EVENT_NAME varchar2(100), --Имя события EVENT_DATE date, --Дата события ORG_ID number(19)); --Идентификтаор организации --4)Создание последовательности EVENT_SEQ с шагом 1, начиная с 1 CREATE SEQUENCE EVENT_SEQ MINVALUE 1 START WITH 1 INCREMENT BY 1 NOCACHE; --5)Создание процедуры заполнения таблицы TBL2 CREATE OR REPLACE PROCEDURE FILL_TABLE ( name_in IN TBL2.EVENT_NAME%TYPE, --входной параметр названия события date_in IN TBL2.EVENT_DATE%TYPE, --входной параметр даты события org_in IN TBL2.ORG_ID%TYPE --входной параметр идентифактора организации ) IS BEGIN --Записываем данные в таблицу TBL2 INSERT INTO TBL2 (EVENT_ID, EVENT_NAME, EVENT_DATE, ORG_ID) VALUES( EVENT_SEQ.NEXTVAL, --Идентификатор события записывается элементом последовательности name_in, date_in, org_in ); commit; END; --6)Заполняем таблицу TBL2 с помощью процедуры FILL_TABLE begin FILL_TABLE('Собеседование',TO_DATE('06.12.2024', 'dd.mm.yyyy'),1); FILL_TABLE('Диплом', TO_DATE('06.12.2024', 'dd.mm.yyyy'),3); FILL_TABLE('День рождения',TO_DATE('06.12.2024', 'dd.mm.yyyy'),0); FILL_TABLE('Новый год',TO_DATE('06.12.2024', 'dd.mm.yyyy'),0); FILL_TABLE('Выпускной',TO_DATE('06.12.2024', 'dd.mm.yyyy'),3); FILL_TABLE('Встреча с другом',TO_DATE('06.12.2024', 'dd.mm.yyyy'),5); FILL_TABLE('Встреча с братом',TO_DATE('06.12.2024', 'dd.mm.yyyy'),5); FILL_TABLE('Поездка в Москву',TO_DATE('06.12.2024', 'dd.mm.yyyy'),0); FILL_TABLE('Поход в лес',TO_DATE('06.12.2024', 'dd.mm.yyyy'),6); FILL_TABLE('Собеседование 2',TO_DATE('06.12.2024', 'dd.mm.yyyy'),1); end; insert into TBL2 VALUES (EVENT_SEQ.NEXTVAL,'Собеседование',TO_DATE('06.12.2024', 'dd.mm.yyyy'),1); insert into TBL2 VALUES (EVENT_SEQ.NEXTVAL,'Диплом', TO_DATE('06.07.2020', 'dd.mm.yyyy'),3); insert into TBL2 VALUES (EVENT_SEQ.NEXTVAL,'День рождения',TO_DATE('05.03.2024', 'dd.mm.yyyy'),0); insert into TBL2 VALUES (EVENT_SEQ.NEXTVAL,'Новый год',TO_DATE('01.01.2024', 'dd.mm.yyyy'),0); insert into TBL2 VALUES (EVENT_SEQ.NEXTVAL,'Выпускной',TO_DATE('31.07.2020', 'dd.mm.yyyy'),3); insert into TBL2 VALUES (EVENT_SEQ.NEXTVAL,'Встреча с другом',TO_DATE('06.04.2024', 'dd.mm.yyyy'),5); insert into TBL2 VALUES (EVENT_SEQ.NEXTVAL,'Встреча с братом',TO_DATE('26.03.2024', 'dd.mm.yyyy'),5); insert into TBL2 VALUES (EVENT_SEQ.NEXTVAL,'Поездка в Москву',TO_DATE('06.05.2024', 'dd.mm.yyyy'),0); insert into TBL2 VALUES (EVENT_SEQ.NEXTVAL,'Поход в лес',TO_DATE('16.11.2023', 'dd.mm.yyyy'),6); insert into TBL2 VALUES (EVENT_SEQ.NEXTVAL,'Собеседование 2',TO_DATE('06.11.2024', 'dd.mm.yyyy'),1); --7)Выводим значения ближайшего события SELECT EVENT_NAME, EVENT_DATE, max(MIN_DATE) FROM( SELECT EVENT_NAME, EVENT_DATE, (current_date - EVENT_DATE) as MIN_DATE FROM TBL2 WHERE (current_date - EVENT_DATE) < 0 ORDER BY (current_date - EVENT_DATE) ) GROUP BY EVENT_NAME, EVENT_DATE; SELECT EVENT_ID, max(MIN_DATE) FROM (SELECT EVENT_NAME, EVENT_DATE, (current_date - EVENT_DATE) as MIN_DATE, EVENT_ID FROM TBL2 WHERE (current_date - EVENT_DATE) < 0) GROUP BY EVENT_ID;

Stuck with a problem? Got Error? Ask ChatGPT!

Copy Clear