русс | укр

Языки программирования

ПаскальСиАссемблерJavaMatlabPhpHtmlJavaScriptCSSC#DelphiТурбо Пролог

Компьютерные сетиСистемное программное обеспечениеИнформационные технологииПрограммирование

Все о программировании


Linux Unix Алгоритмические языки Аналоговые и гибридные вычислительные устройства Архитектура микроконтроллеров Введение в разработку распределенных информационных систем Введение в численные методы Дискретная математика Информационное обслуживание пользователей Информация и моделирование в управлении производством Компьютерная графика Математическое и компьютерное моделирование Моделирование Нейрокомпьютеры Проектирование программ диагностики компьютерных систем и сетей Проектирование системных программ Системы счисления Теория статистики Теория оптимизации Уроки AutoCAD 3D Уроки базы данных Access Уроки Orcad Цифровые автоматы Шпаргалки по компьютеру Шпаргалки по программированию Экспертные системы Элементы теории информации

Если курс не найден, выдавать об этом сообщение в dbms_output, но оставлять в PAYMENT_SUM_IN_RUB null.


Дата добавления: 2015-08-31; просмотров: 627; Нарушение авторских прав


 

Создадим таблицы:

create table KK_RATE

(

rate_date DATE,

currency_code INTEGER,

rate NUMBER(6,2)

);

insert into KK_RATE(RATE_DATE, CURRENCY_CODE, RATE) values(to_date('22.03.2012','dd.mm.yyyy'), 840, 29.43);

insert into KK_RATE(RATE_DATE, CURRENCY_CODE, RATE) values(to_date('23.03.2012','dd.mm.yyyy'), 840, 29.35);

insert into KK_RATE(RATE_DATE, CURRENCY_CODE, RATE) values(to_date('22.03.2012','dd.mm.yyyy'), 978, 38.42);

insert into KK_RATE(RATE_DATE, CURRENCY_CODE, RATE) values(to_date('23.03.2012','dd.mm.yyyy'), 978, 38.45);

create table KK_PAYMENT

(

payment_date DATE,

currency_code INTEGER,

payment_sum_in_currency NUMBER(6,2),

payment_sum_in_rub NUMBER(6,2)

);

 

Создадим решающий задачу триггер:

CREATE OR REPLACE TRIGGER KK_TRIG_BIU_KK_PAYMENT

BEFORE INSERT OR UPDATE ON KK_PAYMENT

FOR EACH ROW

DECLARE

V_RATE KK_RATE.RATE%TYPE;

BEGIN

BEGIN

SELECT RATE

INTO V_RATE

FROM KK_RATE

WHERE KK_RATE.CURRENCY_CODE = :NEW.CURRENCY_CODE

AND KK_RATE.RATE_DATE = :NEW.PAYMENT_DATE;

EXCEPTION

WHEN NO_DATA_FOUND THEN

DBMS_OUTPUT.PUT_LINE('RATE NOT FOUND');

END;

:NEW.PAYMENT_SUM_IN_RUB := V_RATE * :NEW.PAYMENT_SUM_IN_CURRENCY;

END KK_TRIG_BIU_KK_PAYMENT;

 

Осуществим проверочные вставки, указываем 3 поля, 4ое рассчитывается триггером:

INSERT INTO KK_PAYMENT(PAYMENT_DATE, CURRENCY_CODE, PAYMENT_SUM_IN_CURRENCY) VALUES(TO_DATE('22.03.2012', 'DD.MM.YYYY'), 840, 100);

INSERT INTO KK_PAYMENT(PAYMENT_DATE, CURRENCY_CODE, PAYMENT_SUM_IN_CURRENCY) VALUES(TO_DATE('23.03.2012', 'DD.MM.YYYY'), 978, 100);

INSERT INTO KK_PAYMENT(PAYMENT_DATE, CURRENCY_CODE, PAYMENT_SUM_IN_CURRENCY) VALUES(TO_DATE('30.10.1980', 'DD.MM.YYYY'), 840, 2);

 

Смотрим результат (в т. ч. DBMS_OUTPUT после каждой вставки):



SELECT * FROM KK_PAYMENT;

 

Сделаем update:

UPDATE KK_PAYMENT

SET PAYMENT_SUM_IN_CURRENCY = 200

WHERE PAYMENT_DATE = TO_DATE('23.03.2012', 'DD.MM.YYYY')

AND CURRENCY_CODE = 978

AND PAYMENT_SUM_IN_CURRENCY = 100;

 

Смотрим результат:

SELECT * FROM KK_PAYMENT;



<== предыдущая лекция | следующая лекция ==>
Триггеры. | Задача. Триггер логирования DML-операций.


Карта сайта Карта сайта укр


Уроки php mysql Программирование

Онлайн система счисления Калькулятор онлайн обычный Инженерный калькулятор онлайн Замена русских букв на английские для вебмастеров Замена русских букв на английские

Аппаратное и программное обеспечение Графика и компьютерная сфера Интегрированная геоинформационная система Интернет Компьютер Комплектующие компьютера Лекции Методы и средства измерений неэлектрических величин Обслуживание компьютерных и периферийных устройств Операционные системы Параллельное программирование Проектирование электронных средств Периферийные устройства Полезные ресурсы для программистов Программы для программистов Статьи для программистов Cтруктура и организация данных


 


Не нашли то, что искали? Google вам в помощь!

 
 

© life-prog.ru При использовании материалов прямая ссылка на сайт обязательна.

Генерация страницы за: 1.037 сек.