+ Ответить в теме
Показано с 1 по 1 из 1

Тема: Создать запросы

  1. #1
    Nuc is on a distinguished road
    Регистрация
    19.02.2018
    Сообщений
    1
    Вес репутации
    0

    По умолчанию Создать запросы

    Добрый вечер, уважаемые знатоки. Помогите пожалуйста с задачей(одна задача) на 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; 27.02.2018 в 00:36.

  2. По умолчанию

     
    Хотите избавиться от рекламы? Зарегистрируйтесь
+ Ответить в теме

Похожие темы

  1. Запросы в Access
    Добрый день! Прошу помочь, потому что возникло несколько вопросов, и это привело в тупик. 1) Есть таблица1 с данными к примеру, с 1 по 10...
    от kuznetsovSergey в разделе MS Office и VB(A).
  2. SQL запросы в цикле
    База данных содержит поле с числовыми значениями. База выводится на форму через DBGrid1->DataSource->DataSet. В приложении выполняются SQL запросы к...
    от AleksP в разделе C и C++
  3. Запросы SQL и PL/SQL
    Есть задание из шести пунктов по этой теме. Может, кто-нибудь возьмется? За вознограждение. Очень надеюсь на сотрудничество.
    от light_bath в разделе Решите мне задачку
  4. Access (*.adp) SQL запросы
    Добрый день госпада программисты..В ексесе есть такая фишка как "Мастер преобразования ф формат SQL server". Преобразовал я свой проект..такой вопрос...
    от maximZ в разделе MS Office и VB(A).
  5. LDAP запросы.
    Как можно послать LDAP запрос в Active Directory? Как потом можно его использовать, например вывести на экран результат LDAP запроса?
    от Slayer в разделе JScript, VBScript, DHTML...

Ваши права

  • Вы не можете создавать новые темы
  • Вы не можете отвечать в темах
  • Вы не можете прикреплять вложения
  • Вы не можете редактировать свои сообщения