Автор работы: Пользователь скрыл имя, 20 Октября 2009 в 15:59, Не определен
Загайнов И.А. Проектирование информационных систем: Конспект мультимедиа лекций для студентов специальностей 050704 – Вычислительная техника и программное обеспечение, 050703 – Информационные системы.
7.5 Оператор создания.
Оператор создания хранимой процедуры:
CREATE PROCEDURE name
[(param <datatype> [, param <datatype> ...])]
[RETURNS param <datatype> [, param <datatype> ...])]
AS
DECLARE VARIABLE var <datatype>;
[DECLARE VARIABLE var <datatype>; ...]
BEGIN
<compound_statement>
[<compound_statement> ...]
END
7.6 Алгоритмический язык.
Объявление локальных переменных
DECLARE VARIABLE <имя переменной > <тип данных>;
Операторные скобки
BEGIN ... END
Оператор присваивания
Имя
переменной = выражение;
7.7 Операторы циклов.
Оператор условного перехода IF... THEN ... ELSE
IF (<условие>) THEN
< оператор 1> [ELSE
< оператор 2>]
Оператор цикла FOR SELECT ... DO
FOR
<оператор SELECT>
DO
< оператор>;
Оператор условного цикла WHILE ... DO
WHILE (<условие>)
DO
< оператор>
7.8 Оператор выбора SELECT.
SELECT AVG(KOLVO), SUM(KOLVO) FROM RASHOD
WHERE TOVAR = :INJTOVAR
INTO :AVG_KOLVO, :SUM_KOLVO;
Отличие в предложении INTO
Оператор
SUSPEND возвращает полученные значения
в приложение.
7.9 Операторы.
Оператор завершения алгоритма
EXIT
Оператор вызова EXECUTE PROCEDURE
EXECUTE PROCEDURE имя [параметр [, параметр …]]
[RETURNING_VALUES параметр [, параметр ...]];
Оператор генерации события POST _EVENT
POST_EVENT
"Имя события";
7.10 Подразделы SQL.
Data Definition Language (DDL) – язык определения данных. Те операторы, которые затрагивают структуру данных. Создают, изменяют и удаляют объекты метаданных. Операторы – CREATE, ALTER, DROP.
Data Manipulation Language (DML) – язык управления данными. Операторы INSERT, UPDATE, DELETE.
Data Control Language (DCL) – управление доступом к данным. Привилегии пользователей. Операторы GRANT и REVOKE.
Transaction Control Language (TCL) – язык управления изменениями, сделанными группами пользователей. Управление транзакциями. Операторы START TRANSACTION, COMMIT, ROLLBACK.
Cursor
Control Language (CCL) – язык определения и управления
курсором для подготовки выполнения SQL
7.11 Алгоритмический язык.
Язык проектирования триггеров и хранимых процедур включает:
control – flow инструкции,
контекстные переменные только для триггеров,
инструкции обработки событий,
инструкции
обработки ошибок.
7.12
Проектирование ХП.
7.13 Порядок действий.
Для проектирования ХП необходимо выполнить следующие действия:
- имя новой процедуры;
- входные и выходные параметры;
- код тела процедуры;
5. Выполнить команду компиляции кода
(Ctrl+F9).
7.14 Код ХП для IBConsole.
SET TERM ^ ;
CREATE PROCEDURE COL_EMP
RETURNS (NUM_D INTEGER, CNT_EMP INTEGER)
AS BEGIN
FOR SELECT EMPLOYEE.NUM_D, count(EMPLOYEE.TAB_NUM)
FROM EMPLOYEE
GROUP BY EMPLOYEE.NUM_D
INTO :NUM_D, :CNT_EMP
DO SUSPEND; END ^
SET
TERM ; ^
7.15 Выполнение ХП.
Выполнение ХП действия FIND_COL учебного примера.
По заданному наименованию подразделения, подсчитывается количество телефонов в нем.
7.16 Вызов из SQL - редактора.
Для защиты лабораторной обязательно знание вызова процедуры в окне редактора SQL – запросов.
Для вызова процедур действия:
EXECUTE PROCEDURE FIND_COL
(‘Кафедра информационных систем’)
Для вызова процедур выбора:
SELECT
* FROM D_ARX(2006)
7.17 Изменение ХП.
Изменение хранимой процедуры производится оператором:
ALTER PROCEDURE ИмяПроцедуры
[(входной_параметр тип_данных
[,входной_параметр тип_данных...])]
[RETURNS (выходной_параметр тип_данных
[,выходной_параметр тип_данных ...])]
AS
<тело
процедуры>;
7.18 Удаление ХП.
Для удаления хранимой процедуры из базы данных используется оператор:
DROP
PROCEDURE ИмяПроцедуры;
7.19 Функции агрегирования.
Для построения сложных алгоритмов проверки используются агрегатные функции:
AVG(), SUM(), COUNT(),
MAX(), MIN(),
CAST(),
UPPER(),
EXTRACT()
и оператор SELECT с использованием ключевых слов
DISTINCT,
GROUP BY, HAVING, LIKE и др.
7.20 EXTRACT().
Эта функция позволяет извлекать из полей типа даты значения месяца, дня, года, часов, минут и секунд для сравнения в предложении where.
extract (year from arx_emp.dat_izm) = :d_emp
month
day
hour
minute
second
Функция
позволяет вычислять интервалы
времени в годах, месяцах, часах
и т.д.
7.21 Вопрос.
Какой тип данных имеет переменная d_emp ?
1. DATE.
2. INTEGER.
3. TIMESTAMP.
4. NUMERIC().
5. Любой
из перечисленных.
7.22 Пример.
Пример использования в операторе, извлечения года из поля даты:
for select
S_NUM, TAB_NUM, FIRST_NAME, LAST_NAME, PHONE, NUM_T, NUM_D, DEISTV
from arx_emp where
extract(year from arx_emp.dat_izm) = :d_emp
into :s_num, :tab_num, :first_name, :last_name, :phone, :num_t, :num_d, :deistv
do
7.23 Текущие параметры.
Для задания значения текущего времени используются следующие служебные операторы:
CURRENT_DATE
CURRENT_TIME
CURRENT_TIMESTAMP
Например:
UPDATE
TablName SET Name Field = CURRENT_TIME;
7.24 Вопрос.
Функция EXTRACT() позволяет извлекать компоненты из полей типа?
1. DATE.
2. TIME.
3. TIMESTAMP.
4. Только DATE и TIMESTAMP.
5. Нет
правильного ответа.
7.25 Привилегии пользователя.
Для вызова хранимой процедуры из приложения, пользователю или объекту требуется привилегия EXECUTE на нее, задаваемая оператором:
GRANT
EXECUTE ON PROCEDURE ИмяПроцедуры
TO {<Пользователь>} ;
На
момент выполнения операторов все объекты
метаданных и пользователи должны быть
определены.
7.26 Приложение Delphi.
Демонстрация работы хранимых процедур при помощи вызова их в среде разработки Delphi.
Для обращения к хранимой процедуре выбора в приложении клиента используется компонент TQuery. Вызов хранимой процедуры производится в предложении FROM оператора SELECT с указанием входных параметров процедуры. Выходные параметры процедуры (все или часть) указываются в качестве возвращаемых значений оператора SELECT.
Компонент
IBStoredProc предназначен для вызова хранимых
процедур действия SQL - сервера. Для вызова
каждой хранимой процедуры в приложении
лучше использовать собственный компонент.
7.27 Технология IBExpress.
Вкладка Delphi – «InterBase». Компоненты:
7.28 Вызов ХП выбора.
Новый проект с одной формой для вызова ХП «FIND_DIV»
7.29 Соединение с БД.
Для настройки параметров соединения вызываем окно редактора (Database Editor) компонента базы данных и устанавливаем имя пользователя, пароль, кодировку символов и убираем флаг в поле Login Prompt, после чего можно активизировать соединение.
7.30 Связи компонентов.
1. IBTransaction и IBDatabase