Консультация № 187958
28.12.2014, 13:21
139.00 руб.
0 0 0
Здравствуйте, уважаемые эксперты! Прошу вас помочь в решении следующей задачи:

1) В дни кризиса магазин техники принял решение прекратить продажу домашних кинотеатров. Разработайте хранимую процедуру, которая удалит группу всех домашних кинотеатров со всеми дочерними подгруппами, и выдаст исключение при обращении к связанными с ней данными.

Вот такую задачу решал на зачете, решение оформил следующим образом:

*x - номер группы домашних кинотеатров

DELETE FROM (
SELECT *
FROM Item
CONNECT BY PRIOR Item_id = Parent_id
START WITH Item_id = x)

DECLARE
DELETED_ITEMS_EXIST EXCEPTION;
BEGIN
SELECT COUNT(Item_id) INTO c FROM Items
CONNECT BY PRIOR Item_id = Parent_id
START WITH Item_id = x
IF c>0 THEN RAISE DELETED_ITEMS_EXIST
EXCEPTION
WHEN DELETED_ITEMS_EXIST THEN
E_MESSAGE:= "Есть неудаленные элементы"
END


Но, насколько я выяснил позже, решение не совсем хорошее, в нем есть либо ошибки, либо недоработки, узнать, что именно неверно, не имеется возможности.

Прошу вас помочь мне понять, что именно тут не так. Ответа буду очень ждать максимум до вечера понедельника, дальше нужно будет защищать.

Заранее огромное спасибо!

С уважением,

Барс Иван.



PS. С наступающими праздниками!

Обсуждение

Форма ответа