Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Laboratornyy_praktikum_chast_2.docx
Скачиваний:
98
Добавлен:
25.02.2016
Размер:
968.87 Кб
Скачать

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

Хранимая процедура — объект базы данных, представляющий собой набор SQL-инструкций, который компилируется один раз и хранится на сервере. Хранимые процедуры очень похожи на обыкновенные процедуры языков высокого уровня, у них могут быть входные и выходные параметры и локальные переменные, в них могут производиться числовые вычисления и операции над символьными данными, результаты которых могут присваиваться переменным и параметрам. Хранимые функции являются разновидностью хранимых процедур, основное отличие состоит в том, что хранимые функции могут возвращать скалярное значение и вызываются из оператора точно так же, как и любые другие функции (то есть, через указание имени функции). Процедура вызывается с помощью оператора CALL и может только передавать значения обратно, используя выходные переменные. 

Синтаксис создания хранимой процедуры и функции соответственно:

CREATE

[DEFINER = {<пользователь> | CURRENT_USER}]

ROCEDURE <имя хранимой процедуры>([[IN | OUT | INOUT] <имя параметра> <тип> [,...]])

[<характеристика>...]

<тело процедуры>

CREATE FUNCTION

[DEFINER = {<пользователь> | CURRENT_USER}]

<имя хранимой процедуры>([<имя параметра> <тип> [,...]]) [RETURNS <тип>]

[<характеристика> ...]

<тело процедуры>

<тип> - любой допустимый тип данных MySQL.

<характеристика>: LANGUAGE SQL

| [NOT] DETERMINISTIC

| {CONTAINS SQL | NO SQL | READS SQL DATA | MODIFIES SQL DATA}

| SQL SECURITY {DEFINER | INVOKER}

| COMMENT 'строка'

Характеристики DETERMINISTIC и NOT DETERMINISTIC указывают, производит ли функция всегда тот же самый результат для входных данных. Характеристики CONTAINS SQL, NO SQL, READS SQL DATA и MODIFIES SQL DATA обеспечивают информацию относительно того, читает ли функция или записывает данные. NO SQL или READS SQL DATA указывают, что функция не изменяет данные. Характеристика SQL SECURITY может применяться для определения, должна ли процедура выполняться с использованием привилегий пользователя, создающего эту процедуру, или привилегий пользователя, ее вызывающего. Конструкция COMMENT является расширением MySQL и может использоваться для описания хранимой процедуры. Такая информация отображается операторами SHOW CREATE PROCEDURE и SHOW CREATE FUNCTION.

По умолчанию характеристика имеет следующие значение:

NOT DETERMINISTIC

CONTAINS SQL

SQL SECURITY DEFINER

COMMENT ''

<тело процедуры> состоит из допустимой инструкций хранимого кода SQL. Это может быть простая инструкция типа SELECT или INSERT, либо это может быть составная инструкция, использующая BEGIN и END. Составные инструкции могут содержать объявления, циклы и другие инструкции управляющей структуры.

Вызов процедуры производится командой CALL:

CALL <имя хранимой процедуры>( [<параметр> [,...]])

Инструкции ALTER PROCEDURE и ALTER FUNCTION используются, чтобы изменить характеристики сохраненной процедуры или функции.

ALTER {PROCEDURE | FUNCTION} <имя хранимой процедуры> [<характеристика>...]

Изменить аргументы или тело функции и процедуры нельзя. По этому используйте конструкцию:

DROP {PROCEDURE | FUNCTION} [IF EXISTS] <имя хранимой процедуры>

Эта инструкция используется, чтобы удалить сохраненную процедуру или функцию. То есть определенная подпрограмма будет удалена с сервера.

Предложение IF EXISTS является расширением MySQL. Это предотвращает ошибку, если процедура или функция не существует.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]