どのように私はshow tables;
またはshow databases;
コマンドのようなmysqlコマンドラインでストアドプロシージャまたはストアドファンクションのリストを見ることができますか。
SHOW PROCEDURE STATUS;
SHOW FUNCTION STATUS;
show procedure status
ストアドプロシージャが表示されます。
show create procedure MY_PROC
手続きの定義が表示されます。そして
help show
show
コマンドで使用可能なすべてのオプションが表示されます。
賢明な名前での閲覧手順について
select name from mysql.proc
以下のコードはすべてのプロシージャをリストするために使用され、以下のコードはshow procedure statusと同じ結果になります
select * from mysql.proc
より具体的な方法:
SHOW PROCEDURE STATUS
WHERE Db = DATABASE() AND Type = 'PROCEDURE'
上記のように、
show procedure status;
確かにプロシージャのリストを表示しますが、サーバー全体に すべて を表示します。
単一のデータベース内のものだけを見たい場合は、これを試してください。
SHOW PROCEDURE STATUS WHERE Db = 'databasename';
代替案
SELECT * FROM INFORMATION_SCHEMA.ROUTINES
私の好みは以下のようなものです。
このスレッドの他の答えとステッチすると、
select
name, type
from
mysql.proc
where
db = database()
order by
type, name;
...結果は次のようになります。
mysql> select name, type from mysql.proc where db = database() order by type, name;
+------------------------------+-----------+
| name | type |
+------------------------------+-----------+
| get_oldest_to_scan | FUNCTION |
| get_language_prevalence | PROCEDURE |
| get_top_repos_by_user | PROCEDURE |
| get_user_language_prevalence | PROCEDURE |
+------------------------------+-----------+
4 rows in set (0.30 sec)
これを使って:
SHOW PROCEDURE STATUS;
Praveenkumar_Vの投稿のバリエーション:
SELECT `name` FROM mysql.proc WHERE db = 'dbname' AND `type` = 'PROCEDURE';
SELECT `name` FROM mysql.proc WHERE db = 'dbname' AND `type` = 'FUNCTION';
..そして私はいくつかのハウスキーピングの後に時間を節約する必要があったのでこれは:
SELECT CONCAT(
"GRANT EXECUTE ON PROCEDURE `"
,`name`
,"` TO username@'%'; -- "
,`comment`
)
FROM mysql.proc
WHERE db = 'dbname'
AND `type` = 'PROCEDURE';
SELECT CONCAT(
"GRANT EXECUTE ON FUNCTION `"
,`name`
,"` TO username@'%'; -- "
,`comment`
)
FROM mysql.proc
WHERE db = 'dbname'
AND `type` = 'FUNCTION';
あなただけを見せるには:
SELECT
db, type, specific_name, param_list, returns
FROM
mysql.proc
WHERE
definer LIKE
CONCAT('%', CONCAT((SUBSTRING_INDEX((SELECT user()), '@', 1)), '%'));
SELECT specific_name FROM `information_schema`.`ROUTINES` WHERE routine_schema='database_name'
SHOW PROCEDURE STATUS;
すべてのストアドプロシージャを表示します。
SHOW FUNCTION STATUS;
すべての機能を表示します。
SHOW CREATE PROCEDURE [PROC_NAME];
指定した手続きの定義を表示します。
SHOW PROCEDURE STATUS WHERE Db = '[db_name]';
与えられたデータベースのすべての手順を見せます。
現在選択されているデータベースのストアプロシージャを一覧表示する場合は、
SHOW PROCEDURE STATUS WHERE Db = DATABASE();
現在選択されているデータベースに基づいてルーチンを一覧表示します。
_更新された_ あなたのデータベースの関数をリストアップするために
select * from information_schema.ROUTINES where ROUTINE_SCHEMA="YOUR DATABASE NAME" and ROUTINE_TYPE="FUNCTION";
データベース内のルーチン/ストア・プロシージャーをリストします。
select * from information_schema.ROUTINES where ROUTINE_SCHEMA="YOUR DATABASE NAME" and ROUTINE_TYPE="PROCEDURE";
データベース内のテーブルを一覧表示する
select * from information_schema.TABLES WHERE TABLE_TYPE="BASE TABLE" AND TABLE_SCHEMA="YOUR DATABASE NAME";
データベース内のビューを一覧表示するには
方法1:
select * from information_schema.TABLES WHERE TABLE_TYPE="VIEW" AND TABLE_SCHEMA="YOUR DATABASE NAME";
方法2:
select * from information_schema.VIEWS WHERE TABLE_SCHEMA="YOUR DATABASE NAME";
show procedure status;
このコマンドを使用すると、データベース内のすべての手順を見ることができます。
MySQL8
ユーザーの すべてのデータベースの手順と機能 :
SELECT
`ROUTINE_SCHEMA` AS `database`
,`ROUTINE_TYPE` AS `type`
,`SPECIFIC_NAME` AS `name`
,`DTD_IDENTIFIER` AS `data_type`
FROM
`INFORMATION_SCHEMA`.`ROUTINES`
WHERE
`definer` LIKE
CONCAT('%', CONCAT((SUBSTRING_INDEX((SELECT user()), '@', 1)), '%'))
ORDER BY
`database`
,`type`
,`name`
;
ユーザーの 使用中の データベースの手順と関数 :
SELECT
`ROUTINE_SCHEMA` AS `database`
,`ROUTINE_TYPE` AS `type`
,`SPECIFIC_NAME` AS `name`
,`DTD_IDENTIFIER` AS `data_type`
FROM
`INFORMATION_SCHEMA`.`ROUTINES`
WHERE
`definer` LIKE
CONCAT('%', CONCAT((SUBSTRING_INDEX((SELECT user()), '@', 1)), '%'))
AND
`ROUTINE_SCHEMA` = DATABASE()
ORDER BY
`type`
,`name`
;