|
||||
|
5.6 MySQL 5 FAQ по хранимым подпрограммам 5.6.1: Есть ли форум для обсуждения сохраненных подпрограмм в MySQL? Да. http://forums.mysql.com/list.php?98. 5.6.2: Где я могу найти спецификацию ANSI SQL 2003 для сохраненных процедур? К сожалению, официальные спецификации не свободно доступны (ANSI делает их доступными для приобретения). Однако, имеются книги, типа SQL-99 Complete, Really by Peter Gulutzan and Trudy Pelzer, которые дают всесторонний краткий обзор стандарта, включая покрытие сохраненных процедур. 5.6.3: Как управлять сохраненными подпрограммами? Лучше использовать чистую схему наименования сохраненных подпрограмм. Вы можете управлять сохраненными подпрограммами с помощью CREATE [FUNCTION|PROCEDURE], ALTER [FUNCTION|PROCEDURE], DROP [FUNCTION|PROCEDURE] и SHOW CREATE [FUNCTION|PROCEDURE]. Вы можете получать информацию относительно существующих сохраненных процедур, используя таблицу ROUTINES в базе данных INFORMATION_SCHEMA. 5.6.4: Есть ли способ просматривать все сохраненные процедуры и функции в базе данных? Да. Для базы данных dbname используйте этот запрос к таблице INFORMATION_SCHEMA. ROUTINES: SELECT ROUTINE_TYPE, ROUTINE_NAME FROM INFORMATION_SCHEMA.ROUTINES WHERE ROUTINE_SCHEMA='dbname'; Тело сохраненной подпрограммы может просматриваться, используя SHOW CREATE FUNCTION (для сохраненной функции) или SHOW CREATE PROCEDURE (для сохраненной процедуры). 5.6.5: Где сохраненные процедуры сохранены? В таблице proc базы данных mysql. Однако, Вы не должны обращаться к таблицам в базе данных системы непосредственно. Вместо этого, используйте SHOW CREATE FUNCTION, чтобы получить информацию относительно сохраненных функций и SHOW CREATE PROCEDURE, чтобы получить информацию относительно сохраненных процедур. Вы можете также сделать запрос к таблице ROUTINES в базе данных INFORMATION_SCHEMA для информации относительно этой таблицы. 5.6.6: Возможно ли группировать сохраненные процедуры или функции в пакеты? Нет. Это не обеспечивается в MySQL 5.1. 5.6.7: Может сохраненная процедура вызывать другую сохраненную процедуру? Да. 5.6.8: Может сохраненная процедура вызывать триггер? Сохраненная процедура может выполнять инструкцию SQL, типа UPDATE, которая вызывает триггер. 5.6.9: Может сохраненная процедура обращаться к таблицам? Да. Сохраненная процедура может обращаться к таблицам. 5.6.10: Может сохраненная процедура выдать ошибку прикладной программы? В MySQL 5.1 нет. Предполагается выполнять стандартные SQL-инструкции SIGNAL и RESIGNAL в будущем. 5.6.11: Может сохраненная процедура обеспечивать обработку особых ситуаций? MySQL осуществляет определения HANDLER согласно стандарту SQL. 5.6.12: Может сохраненная процедура в MySQL 5.1 вернуть набор результатов? Сохраненная процедура может, а вот сохраненная функция нет. Если Вы выполняете обычный SELECT внутри сохраненной процедуры, набор результатов возвращен непосредственно пользователю. Вы должны использовать клиент-серверный протокол MySQL 4.1 (или выше), чтобы это сработало. Это означает, что например, в PHP Вы должны использовать расширение mysqli вместо mysql. 5.6.13: WITH RECOMPILE обеспечивается для сохраненных процедур? В MySQL 5.1 нет. 5.6.14: Есть ли в MySQL аналог mod_plsql как шлюза к Apache, чтобы общаться непосредственно с сохраннеными процедурами в базе данных? Не имеется никакого эквивалента в MySQL 5.1. 5.6.15: Я могу передавать массив как ввод сохраненной процедуре? В MySQL 5.1 нет. 5.6.16: Я могу передавать курсор как параметр IN для сохраненной процедуры? В MySQL 5.1 курсоры доступны только внутри сохраненных процедур. 5.6.17: Я могу возвращать курсор как параметр OUT из сохраненной процедуры? В MySQL 5.1 курсоры доступны только внутри сохраненных процедур. Однако, если Вы не открываете курсор на SELECT, результат будет послан непосредственно пользователю. Вы можете также применить SELECT INTO в переменные. 5.6.18: Я могу распечатывать значение переменной внутри сохраненной подпрограммы для целей отладки? Да, Вы можете делать это в сохраненной процедуре, но не в сохраненной функции. Если Вы выполняете обычный SELECT внутри сохраненной процедуры, набор результатов возвращен непосредственно пользователю. Вы должны будете использовать протокол MySQL 4.1 (или выше). В PHP Вы должны использовать расширение mysqli вместо mysql. 5.6.19: Я могу передавать или отменять транзакции внутри сохраненной процедуры? Да. Однако, Вы не можете выполнять транзакционные операции внутри сохраненной функции. |
|
||
Главная | Контакты | Нашёл ошибку | Прислать материал | Добавить в избранное |
||||
|