Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 18.02.2018, 18:59   #1
Nuc
Пользователь
 
Регистрация: 18.02.2018
Сообщений: 18
По умолчанию Создать запросы

Добрый день!!! Помогите пожалуйста с задачами на SQL Oracle
5.1.2. При помощи курсора выбрать товары с ценой более 1000 рублей и в случае, если на этот товар не было заказов, уменьшить его цену на 5%. Список товаров, с измененной ценой вывести на экран, а в таблице PRICELIST_LINES к их названию добавить '*'.

5.1.3. Сделать предыдущее задание с использованием курсорного цикла FOR, но добавив еще дополнительное условие: на 5% должна быть уменьшена цена только десяти наиболее дорогим товарам, а остальным цена должна быть снижена на 4%.
Я написал код к этим задачам,
---5.1.2
SET SERVEROUTPUT ON
DECLARE
CURSOR C_TOV IS
SELECT MANUFACTURER,CODE,PRICE FROM PRODUCTS WHERE PRICE<1000;
TOV C_TOV%ROWTYPE;
N NUMBER;
BEGIN
FOR M IN C_TOV LOOP
SELECT COUNT(*) INTO N FROM ORDERS WHERE PRODUCT_MANUFACTURER=TOV.MANUFACTUR ER AND PRODUCT_CODE=TOV.CODE;
IF N=0 THEN
UPDATE PRODUCTS SET PRICE=0.95*PRICE WHERE MANUFACTURER=TOV.MANUFACTURER AND CODE=TOV.CODE;
UPDATE PRICELIST_LINES SET PRODUCT_PRICE=0.95*PRODUCT_PRICE,PR ODUCT_CODE=PRODUCT_CODE||'*' WHERE PRODUCT_CODE=TOV.MANUFACTURER||'_'| |TOV.CODE;
END IF;
END LOOP;
END;
/
ROLLBACK;

---5.1.3
SET SERVEROUTPUT ON
DECLARE
N NUMBER;
C NUMBER;
CD VARCHAR2(4 CHAR);
PR NUMBER;
BEGIN
C:=0;
FOR TOV IN (SELECT MANUFACTURER,CODE FROM PRODUCTS WHERE PRICE<1000)
LOOP
SELECT COUNT(*) INTO N FROM ORDERS WHERE PRODUCT_MANUFACTURER=TOV.MANUFACTUR ER AND PRODUCT_CODE=TOV.CODE;
IF N=0 THEN
IF C<11 THEN
BEGIN
SELECT CODE,PRICE INTO CD,PR FROM PRODUCTS WHERE TOV.MANUFACTURER=MANUFACTURER AND TOV.CODE=CODE AND PRICE<1000 ORDER BY PRICE DESC;
UPDATE PRODUCTS SET PRICE=0.95*PRICE WHERE MANUFACTURER=TOV.MANUFACTURER AND CODE=CD;
UPDATE PRICELIST_LINES SET PRODUCT_PRICE=0.95*PRODUCT_PRICE,PR ODUCT_CODE=PRODUCT_CODE||'*' WHERE PRODUCT_CODE=TOV.MANUFACTURER||'_'| |TOV.CODE;
C:=C+1;
END;
ELSE
BEGIN
SELECT CODE,PRICE INTO CD,PR FROM PRODUCTS WHERE TOV.MANUFACTURER=MANUFACTURER AND TOV.CODE=CODE AND PRICE<1000 ORDER BY PRICE DESC;
UPDATE PRODUCTS SET PRICE=0.96*PRICE WHERE MANUFACTURER=TOV.MANUFACTURER AND CODE=CD;
UPDATE PRICELIST_LINES SET PRODUCT_PRICE=0.96*PRODUCT_PRICE,PR ODUCT_CODE=PRODUCT_CODE||'*' WHERE PRODUCT_CODE=TOV.MANUFACTURER||'_'| |TOV.CODE;
DBMS_OUTPUT.PUT_LINE('*');
C:=C+1;
END;
END IF;
END IF;
END LOOP;
END;
/
SHOW ERRORS;
ROLLBACK;
Как с помощью курсора, записать запрос 5.1.3? и есть ли ошибки? то скажите какие?
Nuc вне форума Ответить с цитированием
Старый 21.02.2018, 22:44   #2
Nuc
Пользователь
 
Регистрация: 18.02.2018
Сообщений: 18
По умолчанию

есть кто живой на форуме?
Nuc вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Помогите создать сложные запросы SQL natsad C# (си шарп) 2 28.03.2016 18:39
Запросы и запросы с помощью QBE LollyMarry Microsoft Office Access 0 02.03.2014 01:14
создать запросы kisya8 Microsoft Office Access 4 14.01.2013 09:48
Кто может создать запросы TOMMY666 Microsoft Office Access 3 24.05.2010 22:00
Помогите создать SQL-запросы, пожалуйста! Nin@ SQL, базы данных 5 20.08.2009 12:36