Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Oracle - MS Server / OracleМП / Lab5 / OracleLab5.doc
Скачиваний:
33
Добавлен:
17.04.2018
Размер:
71.68 Кб
Скачать

Требования к отчету

Отчет должен содержать:

1) название и цель работы;

2) ответы на контрольные вопросы;

4) текст программ на языке PL/ SQL, использованных при выполнении лабораторного задания, и полученные результаты с комментариями.

Контрольные вопросы

  1. Из каких частей состоят хранимые процедуры и функции?

  2. В чем заключается главное различие между процедурой и функцией?

  3. Как специфицируются процедура и функция?

  4. Как объявляются формальные параметры процедуры или функции?

  5. Как вызывается процедура или функция?

  6. Какие формы задания фактических параметров предусмотрены?

  7. Какими операторами создаются процедуры и функции?

  8. Какую структуру имеет блок PL/SQL?

  9. Как объявляются переменные и константы PL/SQL?

  10. Какие способами можно присвоить значения переменным PL/SQL?

  11. Приведите правила записи условного оператора и операторов цикла в языке PL/SQL.

  12. Что представляет собой курсор в языке PL/SQL?

  13. Как объявить курсор в программе на языке PL/SQL?

  14. Какие атрибуты имеет курсор и что они обозначают?

  15. Какие команды предназначены для работы с курсором?

  16. Как записывается и выполняется курсорный цикл FOR?

  17. Как запрограммировать обработку ошибок в программе на языке PL/SQL?

  18. Как объявить, активизировать и обработать исключение, определяемое программистом?

  19. Как объявить и использовать переменную динамического типа?

  20. Как объявить и использовать запись на языке PL/SQL?

  21. Что представляет собой неявный курсор в языке PL/SQL и в чем его особенности?

  22. Какую структуру имеет пакет в языке PL/SQL? Как получить доступ к объектам пакета?

  23. Что представляет собой триггер и в чем его отличие и сходство с процедурой?

  24. В каких ситуациях срабатывает триггер?

  25. Как создать табличный триггер?

Приложение 1

SQL-скрипт для создания учебной базы данных

-- == Удаление существующих одноименных таблиц ==

DROP TABLE old_item;

DROP TABLE purchase;

DROP TABLE product;

DROP TABLE person;

DROP TABLE purchase_archive;

-- ================ PERSON (таблица продавцов)==============

CREATE TABLE person (

person_code VARCHAR2(3) PRIMARY KEY,

first_name VARCHAR2(15),

last_name VARCHAR2(20),

hire_date DATE

)

;

CREATE INDEX person_name_index

ON person(last_name, first_name);

ALTER TABLE person

ADD CONSTRAINT person_unique UNIQUE (

first_name,

last_name,

hire_date

)

;

INSERT INTO person VALUES

('CA', 'Charlene', 'Atlas', '01-ФЕВ-02') ;

INSERT INTO person VALUES

('GA', 'Gary', 'Andersen', '15-ФЕВ-02' ) ;

INSERT INTO person VALUES

('BB', 'Bobby', 'Barkenhagen', '28-ФЕВ-02');

INSERT INTO person VALUES

('LB', 'Laren', 'Baxter', '01-МАР-02 ') ;

INSERT INTO person VALUES

('LN', 'Linda', 'Norton', '01-ИЮН-03');

-- ================= PRODUCT (таблица товаров)====================

CREATE TABLE product (

product_name VARCHAR2(25) PRIMARY KEY,

product_price NUMBER(4,2),

quantity_on_hand NUMBER(5,0),

last_stock_date DATE

)

;

ALTER TABLE product ADD (

CONSTRAINT positive_quantity CHECK(

quantity_on_hand IS NOT NULL

AND

quantity_on_hand >= 0)

)

;

INSERT INTO product VALUES

('Small Widget', 99, 1, '15-ЯНВ-03' ) ;

INSERT INTO product VALUES

( 'Medium Wodget', 75, 1000, '15-ЯНВ-02' ) ;

INSERT INTO product VALUES

('Chrome Phoobar', 50, 100, '15-ЯНВ-03' ) ;

INSERT INTO product VALUES

('Round Chrome Snaphoo', 25, 10000, null);

INSERT INTO product VALUES

('Extra Huge Mega Phoobar +', 9.95, 1234, '15-ЯНВ-04' ) ;

INSERT INTO product VALUES ('Square Zinculator',

45, 1, TO_DATE ('Декабрь 31, 2002, 11:30',

'Month dd, YYYY, HH:MI'));

INSERT INTO product VALUES (

'Anodized Framifier', 49, 5, NULL) ;

INSERT INTO product VALUES (

'Red Snaphoo', 1.95, 10, '31-ДЕК-01' ) ;

INSERT INTO product VALUES (

'Blue Snaphoo', 1.95, 10, '30-ДЕК-01');

-- =================== PURCHASE (таблица покупок)========

CREATE TABLE purchase (

product_name VARCHAR2(25),

salesperson VARCHAR2(3),

purchase_date DATE,

quantity NUMBER(4,2)

)

;

ALTER TABLE purchase

ADD PRIMARY KEY (product_name,

salesperson,

purchase_date

)

;

ALTER TABLE purchase ADD (

CONSTRAINT reasonable_date CHECK(

purchase_date IS NOT NULL

AND

TO_CHAR(purchase_date, 'YYYY-MM-DD') >= '2000-06-30')

)

;

ALTER TABLE purchase

ADD CONSTRAINT purchase_fk_product FOREIGN KEY

(product_name) REFERENCES product;

ALTER TABLE purchase

ADD CONSTRAINT purchase_fk_person FOREIGN KEY

(salesperson) REFERENCES person;

CREATE INDEX purchase_product

ON purchase(product_name);

CREATE INDEX purchase_salesperson

on purchase(salesperson);

INSERT INTO purchase VALUES

('Small Widget', 'CA', '14-ИЮЛ-03', 1);

INSERT INTO purchase VALUES

('Medium Wodget', 'BB', '14-ИЮЛ-03', 75);

INSERT INTO purchase VALUES

('Chrome Phoobar', 'GA', '14-ИЮЛ-03', 2);

INSERT INTO purchase VALUES

('Small Widget', 'GA', '15-ИЮЛ-03', 8);

INSERT INTO purchase VALUES

('Medium Wodget', 'LB', '15-ИЮЛ-03', 20);

INSERT INTO purchase VALUES

('Round Chrome Snaphoo', 'CA', '16-ИЮЛ-03', 5);

INSERT INTO purchase VALUES

('Small Widget', 'CA', '17-ИЮЛ-03', 1);

-- ============ PURCHASE_ARCHIVE (архив покупок)================

CREATE TABLE purchase_archive (

product_name VARCHAR2 (25) ,

salesperson VARCHAR2(3),

purchase_date DATE,

quantity NUMBER (4, 2)

)

;

INSERT INTO purchase_archive VALUES

('Round Snaphoo', 'BB', '21-ИЮН-01', 10);

INSERT INTO purchase_archive VALUES

('Large Harflinger ' , 'GA', '22-ИЮН-01', 50);

INSERT INTO purchase_archive VALUES

('Medium Wodget', 'LB', '23-ИЮН-01', 20);

INSERT INTO purchase_archive VALUES

('Small Widget', 'ZZ', '24-ИЮН-02', 80);

INSERT INTO purchase_archive VALUES

('Chrome Phoobar', 'CA', '25-ИЮН-02', 2);

INSERT INTO purchase_archive VALUES

('Small Widget', 'JT', '26-ИЮН-02', 50);

Соседние файлы в папке Lab5