|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
18.02.2018, 18:59 | #1 |
Пользователь
Регистрация: 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? и есть ли ошибки? то скажите какие? |
21.02.2018, 22:44 | #2 |
Пользователь
Регистрация: 18.02.2018
Сообщений: 18
|
есть кто живой на форуме?
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Помогите создать сложные запросы 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 |