Скрипт по созданию хранимых процедур
DECLARE VARIABLE discount INTEGER; WHERE c. id_client=:id_client; CREATE PROCEDURE view_address. CREATE PROCEDURE not_executed. DECLARE VARIABLE summa money; SET c. discount = :discount. Apartament_number transfer). GROUP BY o. id_client. INTO: id_client:summa. AND o. executed = '0'. UPDATE client c. Discount = '0'; FROM orders o. Set term ;!! Set term !!; Suspend; Suspend; Begin. Begin. Begin… Читать ещё >
Скрипт по созданию хранимых процедур (реферат, курсовая, диплом, контрольная)
В базе данных необходимо создать следующие хранимые процедуры:
- 1. Вывести все непогашенные заказы вместе с товаром, их количеством и сотрудников которые их выполняют.
- 2. Расчет и занесение скидки для клиента в зависимости от суммы потраченной им на товары.
- 3. Вывести город, улицу, дом, квартиру, и человека который проживает по данному адресу.
/************************************************************/.
/*Вывести все непогашенные заказы вместе с товаром, их количеством и сотрудников которые их выполняют */.
/************************************************************/.
/*Вводим поле «погашено» в таблицу заказ*/.
ALTER TABLE orders ADD executed INTEGER CHECK ((executed IN (0,1)) and (executed is not null));
/*вводим для клиента поле скидка*/.
ALTER TABLE client ADD discount INTEGER DEFAULT 0 CHECK (discount IS NOT NULL);
SET TERM !!;
CREATE PROCEDURE not_executed.
RETURNS (id_order INTEGER, name VARCHAR (20), quantity INTEGER,.
manager VARCHAR (20), seller VARCHAR (20), forwarding_agent VARCHAR (20), driver VARCHAR (20)).
AS.
BEGIN.
FOR.
SELECT o. id_order, r. quantity, g.name,.
- (SELECT e. fio FROM employee e WHERE e. id_employee=o.manager) AS manager,
- (SELECT e. fio FROM employee e WHERE e. id_employee=o.seller) AS seller,
- (SELECT e. fio FROM employee e WHERE e. id_employee=d.forwarding_agent) AS forwarding_agent,
- (SELECT e. fio FROM employee e WHERE e. id_employee=d.driver) AS driver
FROM orders o, row_order r, goods g, row_delivery rd, delivery d.
WHERE r. id_order=o.id_order AND r. id_goods=g.id_goods AND rd. id_order=o.id_order AND d. id_delivery=rd.id_delivery.
AND o. executed = '0'.
INTO :id_order:quantity:name:manager:seller:forwarding_agent:driver.
DO.
SUSPEND;
END!
/************************************************************/.
/*Расчет и занесение скидки для клиента в зависимости от суммы потраченной им на товары */.
/************************************************************/.
CREATE PROCEDURE calculate_discount.
AS.
DECLARE VARIABLE id_client INTEGER;
DECLARE VARIABLE summa money;
DECLARE VARIABLE discount INTEGER;
BEGIN.
FOR.
SELECT o. id_client, SUM (o.cost).
FROM orders o.
GROUP BY o. id_client.
INTO :id_client:summa.
DO.
BEGIN.
IF (:summa>'3000') THEN discount = '5'; ELSE.
IF ((:summa'3000')) THEN discount = '7'; ELSE.
IF (:summa>'10 000') THEN discount = '10'; ELSE.
discount = '0';
UPDATE client c.
SET c. discount = :discount.
WHERE c. id_client=:id_client;
END.
END!
/************************************************************/.
/*Вывести город, улицу, дом, квартиру, и человека который проживает по данному адресу*/.
/************************************************************/.
CREATE PROCEDURE view_address.
returns (fio varchar (20), city_name varchar (20), street_name varchar (20), house_number transfer,.
apartament_number transfer).
AS.
BEGIN.
FOR.
SELECT c. fio, ci. city_name, s. street_name, a. house_number, a. apartament_number.
FROM client c, address a, city ci, street s.
WHERE c. id_address=a.id_address AND a. id_city=ci.id_city AND a. id_street=s.id_street.
INTO :fio:city_name:street_name:house_number:apartament_number.
DO.
suspend;
END!
SET TERM ;!!