web-dev-qa-db-ja.com

MySQLでストアドプロシージャ/関数定義を表示する

Microsoft SQL Serverのsp_helptextに似た、ストアドプロシージャまたは関数の定義を表示するMySQLコマンドとは何ですか?

SHOW PROCEDURE STATUSが利用可能な手順のリストを表示することを知っています。単一のプロシージャの定義を確認する必要があります。

65
Srinivas M.V.
SHOW CREATE PROCEDURE <name>

CREATE PROCEDUREステートメントを使用して作成された、以前に定義されたストアドプロシージャのテキストを返します。ストアド関数のPROCEDUREFUNCTIONと交換します。

99
afftee

これを使用できます:

SELECT ROUTINE_DEFINITION FROM INFORMATION_SCHEMA.ROUTINES
WHERE ROUTINE_SCHEMA = 'yourdb' AND ROUTINE_TYPE = 'PROCEDURE' AND ROUTINE_NAME = "procedurename";
35
Haim Evgi
SHOW CREATE PROCEDURE proc_name;

proc_nameの定義を返します

9
valli

手順のリストを知りたい場合は、次のコマンドを実行できます-

show procedure status;

プロシージャとその定義者のリストが表示されます。その後、show create procedure <procedurename>;

8

何かのようなもの:

DELIMITER //

CREATE PROCEDURE alluser()
BEGIN
   SELECT *
   FROM users;
END //

DELIMITER ;

より:

SHOW CREATE PROCEDURE alluser

結果を与える:

'alluser', 'STRICT_TRANS_TABLES,NO_AUTO_CREATE_USER', 'CREATE DEFINER=`root`@`localhost` PROCEDURE `alluser`()
BEGIN
   SELECT *
   FROM users;
END'
5
Michel

存在するすべての製品の概要を取得する場合、またはSHOW CREATE PROCEDUREで表示されるプロシージャヘッダーのみを取得するという問題が発生する場合は、別の迅速でハッキングなソリューションを使用します。

mysqldump --user=<user> -p --no-data --routines <database>

テーブルの説明もエクスポートされますが、データはエクスポートされません。未知のスキーマまたは忘れられたスキーマをスニッフィングするのに有効です...;)

2
ISparkes

データベースでテーブルprocを使用できますmysql

mysql> SELECT body FROM mysql.proc
WHERE db = 'yourdb' AND name = 'procedurename' ;

Select tomysql.procの許可が必要なことに注意してください。

mysql> GRANT SELECT ON mysql.proc TO 'youruser'@'yourhost' IDENTIFIED BY 'yourpass' ;
1