web-dev-qa-db-ja.com

ストアドプロシージャ/関数のリストMysqlのコマンドライン

どのように私はshow tables;またはshow databases;コマンドのようなmysqlコマンドラインでストアドプロシージャまたはストアドファンクションのリストを見ることができますか。

449
systemsfault
SHOW PROCEDURE STATUS;
SHOW FUNCTION STATUS;
703
fredrik
show procedure status

ストアドプロシージャが表示されます。

show create procedure MY_PROC

手続きの定義が表示されます。そして

help show

showコマンドで使用可能なすべてのオプションが表示されます。

204
unbeknown

賢明な名前での閲覧手順について

select name from mysql.proc 

以下のコードはすべてのプロシージャをリストするために使用され、以下のコードはshow procedure statusと同じ結果になります

select * from mysql.proc 
83
Praveenkumar_V

より具体的な方法:

SHOW PROCEDURE STATUS 
WHERE Db = DATABASE() AND Type = 'PROCEDURE'
42
sassman

上記のように、

show procedure status;

確かにプロシージャのリストを表示しますが、サーバー全体に すべて を表示します。

単一のデータベース内のものだけを見たい場合は、これを試してください。

SHOW PROCEDURE STATUS WHERE Db = 'databasename';
30
Drarok

代替案

SELECT * FROM INFORMATION_SCHEMA.ROUTINES
26
macio.Jun

私の好みは以下のようなものです。

  1. 関数と手続きの両方をリストします。
  2. どれがどれであるか私に知らせます、
  3. 手続きの名前と型を与えます そして他には何も与えません
  4. 現在のデータベースで結果をフィルタリングします。 現在の定義者ではありません
  5. 結果をソートします

このスレッドの他の答えとステッチすると、

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)
21
John Haugeland

これを使って:

SHOW PROCEDURE STATUS;
14
sharninder

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';
9
trapper_hag

あなただけを見せるには:

SELECT
  db, type, specific_name, param_list, returns
FROM
  mysql.proc
WHERE
  definer LIKE
  CONCAT('%', CONCAT((SUBSTRING_INDEX((SELECT user()), '@', 1)), '%'));
8
SELECT specific_name FROM `information_schema`.`ROUTINES` WHERE routine_schema='database_name'
7
Sunil Kumar
SHOW PROCEDURE STATUS;

すべてのストアドプロシージャを表示します。

SHOW FUNCTION STATUS;

すべての機能を表示します。

SHOW CREATE PROCEDURE [PROC_NAME];

指定した手続きの定義を表示します。

SHOW PROCEDURE STATUS WHERE Db = '[db_name]';

与えられたデータベースのすべての手順を見せます。

5
Optimizer

現在選択されているデータベースのストアプロシージャを一覧表示する場合は、

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";
4
                           show procedure status;

このコマンドを使用すると、データベース内のすべての手順を見ることができます。

1
Karan Rajput

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`
;
0
Jimmix