5.2. Синтаксис хранимых процедур

5.2. Синтаксис хранимых процедур

Сохраненная подпрограмма является процедурой или функцией. Сохраненные подпрограммы созданы командами CREATE PROCEDURE и CREATE FUNCTION. Процедура вызывается, используя инструкцию CALL, и может только передавать обратные значения, используя переменные вывода. Функция может быть названа точно так же, как и любая другая функция языка (то есть, вызывая имя функции), и может возвращать скалярное значение. Сохраненные подпрограммы, разумеется, могут вызывать другие сохраненные подпрограммы.

Начиная с MySQL 5.0.1, сохраненная процедура или функция хранится не как попало, а связана со специфической базой данных. Это имеет несколько импликаций:

Когда подпрограмма вызывается, выполняется неявный вызов USE db_name (и отменяется, когда подпрограмма завершается). Инструкции USE внутри сохраненных подпрограмм отвергнуты.

Вы можете квалифицировать стандартные имена с именем базы данных. Это может использоваться, чтобы обратиться к подпрограмме, которая не в текущей (актуальной) базе данных. Например, чтобы вызвать сохраненную процедуру p или функцию f, которые связаны с базой данных test, Вы можете скомандовать CALL test.p() или test.f().

Когда база данных удалена, все сохраненные подпрограммы, связанные с ней, также удалены.

В MySQL 5.0.0 сохраненные подпрограммы глобальны и не связаны с базой данных. Они наследуют заданную по умолчанию базу данных с вызывающего оператора. Если внутри подпрограммы выполнено USE db_name , первоначальная заданная по умолчанию база данных восстановлена после стандартного выхода.

MySQL поддерживает самое полезное расширение, которое позволяет использование регулярных инструкций SELECT (то есть, без того, чтобы использовать курсоры или локальные переменные) внутри сохраненной процедуры. Набор результатов такого запроса просто послан непосредственно пользователю. Многократные инструкции SELECT генерируют много наборов результатов, так что пользователь должен применять библиотеку клиентов MySQL, что поддерживает много наборов результатов. Это означает, что библиотека должна быть от MySQL не ниже 4.1. Пользователь должен также определить опцию CLIENT_MULTI_STATEMENTS, когда соединяется. Для программ на C, это может быть выполнено функцией mysql_real_connect() из C API.

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

Поделитесь на страничке

Следующая глава >

Похожие главы из других книг:

Разделители в хранимых процедурах

Из книги автора

Разделители в хранимых процедурах Обратите внимание, что оператор внутри процедуры заканчивается точкой с запятой (;). Как известно, точка с запятой является стандартным разделителем команд в SQL - она является сигналом интерпретатору SQL, что текст команды введен полностью


Вызов хранимых процедур InterBase с использованием стандартного синтаксиса ODBC

Из книги автора

Вызов хранимых процедур InterBase с использованием стандартного синтаксиса ODBC Как известно, InterBase использует два типа хранимых процедур" так называемые selectable-процедуры и executeable-процедуры; при этом процедуры разного типа отличаются способом вызова в SQL. В отличие от других ODBC-


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

Из книги автора

Создание и запуск хранимых процедур С помощью представления можно контролировать данные, возвращаемые SQL Server, однако существует еще более мощное средство — хранимые процедуры (stored procedures). Хранимые процедуры подобны представлениям, но могут выполнять более сложные


Запуск хранимых процедур в окне программы SQL Query Analyzer

Из книги автора

Запуск хранимых процедур в окне программы SQL Query Analyzer Для запуска хранимых процедур (а также представлений и других команд SQL) можно воспользоваться программой SQL Query Analyzer. Таким образом можно протестировать созданную хранимую процедуру или представление. Для запуска


Отображение текста существующих представлений или хранимых процедур

Из книги автора

Отображение текста существующих представлений или хранимых процедур Для отображения кода представлений или хранимых процедур можно использовать хранимую процедуру sp_helptext. Для того чтобы отобразить эти данные, необходимо ввести команду sp_helptext, а затем имя


Отличия процедур типа Function от процедур типа Sub

Из книги автора

Отличия процедур типа Function от процедур типа Sub Между процедурами типа Function и типа Sub есть одно существенное отличие: в процедуре типа Function обязательно где-то должен присутствовать по крайней мере один оператор, задающий значение этой функции. При этом используется имя


Выполнение хранимых процедур с помощью DbCommand

Из книги автора

Выполнение хранимых процедур с помощью DbCommand Хранимой процедурой называется блок программного кода SQL сохраненный в базе данных. Хранимые процедуры могут создаваться для того, чтобы возвращать наборы строк или скалярных типов данных, и могут иметь любое число


Абстракция хранимых данных

Из книги автора

Абстракция хранимых данных Даже в современных системах клиент-сервер можно найти слишком много плохо выполняющихся, подверженных ошибкам приложений, которые были "спроектированы" с использованием отчетов и электронных таблиц в качестве основы для проектирования базы


Преимущества использования хранимых процедур

Из книги автора

Преимущества использования хранимых процедур Перечислим преимущества использования процедурных модулей, которые выполняются внутри базы данных.* Модульное проектирование: все приложения, имеющие доступ к одной базе данных, совместно используют хранимые процедуры,


Компиляция хранимых процедур и триггеров

Из книги автора

Компиляция хранимых процедур и триггеров Для компиляции любого файла скрипта вы должны включить в файл, по крайней мере, одну "пустую строку" после последнего оператора или комментария. Чтобы сделать это, нажмите, по меньшей мере, один раз клавишу <Return> (Enter) в вашем


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

Из книги автора

Создание хранимых процедур В вашем скрипте или в isql начните с установки символа терминатора, который будет использован для отметки конца синтаксиса CREATE PROCEDURE. Следующий пример устанавливает символ терминатора в &:SET TERM &;Синтаксис оператора:CREATE PROCEDURE


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

Из книги автора

Изменение хранимых процедур Firebird 1.0.x предоставляет два способа изменения хранимых процедур с использованием операторов DDL, a Firebird 1.5 добавляет еще и третий. Это:* оператор ALTER PROCEDURE, который изменяет определение существующей хранимой процедуры, сохраняя ее


Удаление хранимых процедур

Из книги автора

Удаление хранимых процедур Оператор DROP PROCEDURE удаляет существующую хранимую процедуру из базы данных. Вы можете использовать этот оператор везде, где можно использовать операторы DDL.! ! !ПРИМЕЧАНИЕ. Операторы DDL не могут выполняться как операторы PSQL. При этом в Firebird 1.5