Поиск  Пользователи  Правила 
Закрыть
Логин:
Пароль:
Забыли свой пароль?
Войти
 
Страницы: 1
RSS
2 задания на PL/SQL
 
Помогите решить две задачи или хотябы одну из них на языке PL/SQL(БД ORACLE)...

База данных склада магазина состоит из двух таблиц:
-MANUFACTURERS(MFR_ID, MFR,ADDRESS, INFO);
-PRODUCTS(PRODUCT_ID, PRODUCT_NAME, MFR_ID, PRICE, QUANTITY, DESCRIPTION)

Таблица «Производители» (Manufacturers):

MFR_ID NUMBER (4) NOT NULL Идентификатор производителя
MFR VARCHAR2(20)        Производитель
ADDRESS VARCHAR2(40)        Адрес производителя
INFO VARCHAR2(40)        Информация о производителе


Таблица «Товары» (Products):

PRODUCT_ID   NUMBER (4) NOT NULL Идентификатор товара
PRODUCT_NAME VARCHAR2(20) Наименование товара
MFR_ID     NUMBER(4)         Идентификатор производителя
PRICE     NUMBER (10,2) Цена за единицу
QUANTITY     INTEGER         Количество единиц
DESCRIPTION  VARCHAR2(50) Описание товара

1)Написать процедуру, которая получает на вход номер производителя и цену, и для товаров заданного производителя, которые дороже заданной цены, в поле DESCTIPTION записывает "Дорогой товар", а для остальных его товаров-"Дешёвый товар".


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

Если не разберешся пиши.
 
Цитата
ScReaM пишет:
Вот хорошая дока, которая поможет сделать твои задачки.

Если не разберешся пиши.

У меня в самого есть доки по этому а вот мозгов нету чтоб решить! напишите решение хотя бы 2-го задания пожалуйста !
 
Вот по памяти накидал второе задание, если где то ошибся коллеги подправте:

Код
CREATE OR REPLACE FUNCTION BARYGA(OURPRICE IN NUM) RETURN VARCHAR2
IS

declare

res varchar2 := '';

cursor c_f is 
    select PRODUCTS.PRICE, MANUFACTURERS.MFR
      from PRODUCTS, MANUFACTURERS
     where PRODUCTS.MFR_ID = MANUFACTURERS.MFR_ID;
    v_a PRODUCTS.PRICE%type;
    v_b MANUFACTURERS.MFR%type;


BEGIN

open c_f;
  loop
    fetch c_f into v_a, v_b;
    exit when c_f%notfound;
    if ourprice > v_a then res := res + v_b + ', ';
    else res := res;   

  end loop;

  close c_f;
  return (res);

END BARYGA;
/
 
Большое спасибо ! :)
 
Wow))а может еще кто-то помочь?
Страницы: 1
Читают тему