Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Скачиваний:
23
Добавлен:
01.05.2014
Размер:
526.34 Кб
Скачать

Элементы языка SQL

Работа с просмотрами (VIEW)

Дополнительные параметры просмотра

1) Указание имен столбцов просмотра. Имена столбцов просмотра должны указываться, когда в качестве столбца определяется выражение:

CREATE VIEW STOIM_RASH (DAT_RASH, TOVAR, STOIM) AS SELECT R.DAT, R.TOVAR, R.KOLVO*T.ZENA

FROM RASHOD R, TOVARY T

WHERE R.TOVAR = T.TOVAR

2) Использование CHECK OPTION. Если указан CHECK OPTION, то будут отвергаться все попытки добавления новых или изменения существующих записей таким образом, чтобы нарушалось условие WHERE оператора SELECТ.

CREATE VIEW RASH_1000_CHECK AS SELECT * FROM RASHOD

WHERE KOLVO > 1000

WITH CHECK OPTRION

Нельзя добавить записи со значением поля KOLVO, меньшим 1000

Элементы языка SQL

Работа с хранимыми процедурами

Понятие хранимой процедуры

Хранимая процедура – это модуль, написанный на процедурном языке и хранящийся в БД как метаданные (т.е. данные о данных).

Существует два вида хранимых процедур:

процедуры выбора - могут возвращать более одного значения. В приложении имя ХП выбора подставляется в оператор SELECT вместо имени таблицы или просмотра;

процедуры действия – вообще могут не возвращать данных и используются для реализации каких-либо действий .

Преимущества использования ХП:

1)одну процедуру можно использовать многими приложениями;

2)разгрузка приложения клиента путем переноса части кода на сервер и вследствие этого – упрощение клиентских приложений;

3)при изменении ХП все изменения немедленно становятся доступными для всех клиентских приложений;

4)улучшенные характеристики выполнения, связанные с тем, что ХП выполняются сервером, в частности – уменьшенный сетевой трафик.

Элементы языка SQL

Работа с хранимыми процедурами

Создание хранимой процедуры

Хранимая процедура создается оператором:

CREATE PROCEDURE ИмяПроцедур

[ ( входной_параметр тип_данных [, входной_параметр тип_данных … ] ) ] [ RETURNS

( выходной_параметр тип_данных [ , выходной_параметр тип_данных … ] ) ] AS

[< объявление локальных переменных процедуры>] BEGIN

< оператор > [ < оператор > … ]

END ;

Элементы языка SQL

Работа с хранимыми процедурами

Создание хранимой процедуры

Пример:

CREATE PROCEDURE FIND_MAX_KOLVO (IN_TOVAR VARCHAR(20)) RETURNS (MAX_KOLVO INTEGER)

AS BEGIN

SELECT MAX(KOLVO) FROM RASHOD

WHERE TOVAR = :IN_TOVAR INTO :MAX_KOLVO; SUSPEND;

END ;

Элементы языка SQL

Работа с хранимыми процедурами

Алгоритмический язык хранимых процедур

Формат объявления локальных переменных:

DECLARE VARIABLE <имя переменной> < тип данных > ;

Пример:

CREATE PROCEDURE FULL_ADR (TOVAR VARCHAR(20) ) RETURNS GOROD_ADRES VARCHAR(40)) AS

DECLARE VARIABLE NAIDEN_POKUPATEL VARCHAR(20); DECLARE VARIABLE MAX_KOLVO INTEGER;

BEGIN ….

END ;

Элементы языка SQL

Работа с хранимыми процедурами

Алгоритмический язык хранимых процедур

Операторные скобки :

Используются для указания границ составного оператора

BEGIN

...

END ;

Оператор присваивания:

Имя_переменной = выражение ;

OUT_TOVAR = UPPER(TOVAR);

Оператор условия :

IF ( < условие> ) THEN < оператор 1>

[ELSE

< оператор 2 > ]:

Элементы языка SQL

Работа с хранимыми процедурами

Оператор SELECT

Оператор SELECT используется в ХП для выдачи единичной строки. К обычному формату SELECT в процедурный оператор добавлено предложение:

INTO :переменная [, переменная … ]

Пример:

SELECT AVG(KOLVO), SUM(KOLVO) FROM RASHOD

WHERE TOVAR = :IN_TOVAR INTO :AVG_KOLVO, :SUM_KOLVO;

Элементы языка SQL

Работа с хранимыми процедурами

Оператор FOR SELECT … DO

FOR

<оператор SELECT > DO

<оператор > ;

Оператор SELECT используется в ХП в расширенном синтаксисе с INTO. Для каждой строки полученного результирующего НД выполняется оператор, следующий за словом DO. Этим оператором часто бывает SUSPEND, который приводит к возврату выходных параметров в вызывающее приложение.

Пример:

CREATE PROCEDURE RASHOD_TOVARA (IN_TOVAR VARCHAR(20) ) RETURNS (OUT_DAT DATE, OUT_POKUP VARCHAR(20), OUT_KOLVO INTEGER) AS

BEGIN

FOR SELECT DAT_RASH, POKUP, KOLVO FROM RASHOD WHERE TOVAR = :IN_TOVAR

INTO :OUT_DAT, :OUT_POKUP, :OUT_KOLVO DO

SUSPEND; END

Элементы языка SQL

Работа с хранимыми процедурами

Оператор SUSPEND

Оператор SUSPEND передает в вызывающее приложение значения результирующих параметров (перечисленных после слова RETURNS в описании функции), имеющие место на момент выполнения SUSPEND. Когда от оператора SELECT вызывающего приложения приходит запрос на следующее значение выходных параметров , выполнение хранимой процедуры возобновляется.

Пример:

CREATE PROCEDURE POK_LIST (IN_TOVAR VARCHAR(20) ) RETURNS (POK VARCHAR(20) ) AS

DECLARE VARIABLE AVG_KOLVO INTEGER; BEGIN

SELECT AVG(KOLVO) FROM RASHOD WHERE TOVAR = :IN_TOVAR

INTO :AVG_KOLVO;

FOR SELECT POKUP FROM RASHOD WHERE KOLVO >= :AVG_KOLVO INTO :POK

DO BEGIN

IF (:POK IS NULL) THEN

POK = “Покупатель не указан”; SUSPEND;

END END

Элементы языка SQL

Работа с хранимыми процедурами

Оператор WHILE … DO

WHILE (<условие>) DO < оператор > ;

В цикле проверяется выполнение условия. Если истинно – выполняется оператор. Цикл продолжается пока условие не станет ложным.

Пример:

CREATE PROCEDURE SUM_0_N ( N INTEGER ) RETURNS ( S INTEGER ) AS

DECLARE VARIABLE TMP INTEGER; BEGIN

S = 0;

TMP=1;

WHILE ( TMP <= N ) DO BEGIN

S = S+TMP; TM = TPM + 1; END

END

Соседние файлы в папке Презентации по технологиям БД