Spec-Zone.ru › MariaDB

SHOW CREATE PROCEDURE

Синтаксис

SHOW CREATE PROCEDURE proc_name

Описание

Данное утверждение является расширением MariaDB. Оно возвращает точную строку, которую можно использовать для повторного создания именой хранимой процедуры, а также SQL_MODE , которая использовалась при создании триггера, и кодировку символов, используемую подключением.. Аналогичное утверждение, SHOW CREATE FUNCTION, отображает информацию о хранимых функциях.

Оба утверждения требуют, чтобы вы были владельцем процедуры или имели привилегию SELECT на таблице mysql.proc. Когда ни одно из этих условий не выполняется, утверждения отображают NULL для поля Create Procedure или Create Function.

Предупреждение Пользователи с привилегиями SELECT на mysql.proc или привилегиями USAGE на *.* могут просматривать текст процедур, даже если у них нет привилегий на саму функцию или процедуру.

Вывод этих утверждений ненадежно зависит от переменной серверной системы sql_quote_show_create - см. http://bugs.mysql.com/bug.php?id=12719

Примеры

Вот сравнение утверждений SHOW CREATE PROCEDURE и SHOW CREATE FUNCTION.

SHOW CREATE PROCEDURE test.simpleproc\G
*************************** 1. row ***************************
           Procedure: simpleproc
            sql_mode: 
    Create Procedure: CREATE PROCEDURE `simpleproc`(OUT param1 INT)
                      BEGIN
                      SELECT COUNT(*) INTO param1 FROM t;
                      END
character_set_client: latin1
collation_connection: latin1_swedish_ci
  Database Collation: latin1_swedish_ci

SHOW CREATE FUNCTION test.hello\G
*************************** 1. row ***************************
            Function: hello
            sql_mode:
     Create Function: CREATE FUNCTION `hello`(s CHAR(20))
                      RETURNS CHAR(50)
                      RETURN CONCAT('Hello, ',s,'!')
character_set_client: latin1
collation_connection: latin1_swedish_ci
  Database Collation: latin1_swedish_ci

Если пользователь, который выполняет утверждение, не имеет привилегий на процедуру, попытка CALL процедуры вызывает ошибку 1370.

CALL test.prc1();
Error 1370 (42000): execute command denieed to user 'test_user'@'localhost' for routine 'test'.'prc1'

Если у пользователя нет привилегий на процедуру и привилегий SELECT на таблицу mysql.proc, он получает ошибку 1305, сообщая, что процедуры не существует.

SHOW CREATE TABLES test.prc1\G
Error 1305 (42000): PROCEDURE prc1 does not exist

См. также

  • Обзор хранимых процедур
  • CREATE PROCEDURE
  • ALTER PROCEDURE
  • DROP PROCEDURE
  • SHOW PROCEDURE STATUS
  • Привилегии на хранимые процедуры
  • Таблица Information Schema ROUTINES
Содержимое, воспроизведенное на этом сайте, является собственностью соответствующих владельцев, и это содержимое не проходит предварительной проверки MariaDB. Мнения, информация и мнения, выраженные в этом содержании, не обязательно отражают точку зрения MariaDB или любой другой стороны.

© 2023 MariaDB
Licensed under the Creative Commons Attribution 3.0 Unported License and the GNU Free Documentation License.
https://mariadb.com/kb/en/show-create-procedure/

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API