Тема: Робота з діапазонами дат (Оракл)
Написати процедуру, що зберігається з параметрами, що визначають діапазон дат випуску книг. процедура
дозволяє оновити дані про тираж випуску книг за наступними умовами:
- • Якщо дата випуску книги знаходиться в певному діапазоні, тоді кількість сторінок потрібно збільшити в два рази, а ціну за одиницю збільшити на 20%;
- • Якщо дата випуску книги не входить в діапазон, тоді тираж залишити без змін.
Передбачити висновок на екран відповідних повідомлень про помилку, якщо передані дати однакові,
або кінцева дата меньша від початкової дати, або ж початкова дата більша поточної дати
create or replace procedure Book_update(start_date date, end_date date)
as
begin
if min(b.DATE_OF_PUBLISH)=max(b.DATE_OF_PUBLISH) then
RAISE_APPLICATION_ERROR(200,'Дата початку та дата кінця однакові');
elsif start_date>end_date then
RAISE_APPLICATION_ERROR(201,'Дата початку більша ніж дата кінця');
elsif start_date>sysdate then
RAISE_APPLICATION_ERROR(202,'Дата початку більша ніж сьогоднішня дата');
update BOOKS set PRICE=PRICE*1.1,PAGES=PAGES*2
where start_date=min(DATE_OF_PUBLISH)and end_date=max(DATE_OF_PUBLISH)and DATE_OF_PUBLISH
between start_date and end_date;
update BOOKS set set PRICE=PRICE*1.1
where start_date=min(DATE_OF_PUBLISH)and end_date=max(DATE_OF_PUBLISH)and DATE_OF_PUBLISH
not between start_date and end_date;
end if;
end;
Помилки:
PL/SQL: SQL Statement ignored
11/18 PL/SQL: ORA-00934: group function is not allowed here
14/1 PL/SQL: SQL Statement ignored
14/18 PL/SQL: ORA-01747: invalid user.table.column, table.column, or column specification
Errors: check compiler log