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
См. также
© 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/