Como posso ver a lista dos procedimentos armazenados ou funções armazenadas na linha de comando do mysql como show tables;
ou show databases;
comandos.
Como posso ver a lista dos procedimentos armazenados ou funções armazenadas na linha de comando do mysql como show tables;
ou show databases;
comandos.
Respostas:
show procedure status
irá mostrar os procedimentos armazenados.
show create procedure MY_PROC
irá mostrar a definição de um procedimento. E
help show
irá mostrar todas as opções disponíveis para o show
comando.
Para o procedimento de exibição no nome
select name from mysql.proc
o código abaixo usado para listar todo o procedimento e o código abaixo fornece o mesmo resultado que o status do procedimento de exibição
select * from mysql.proc
select db,name,type from mysql.proc where db<>'sys';
obter um pouco mais de informação e menos kruft de sistema embutido.
Uma maneira mais específica:
SHOW PROCEDURE STATUS
WHERE Db = DATABASE() AND Type = 'PROCEDURE'
Como acima mencionado,
show procedure status;
De fato, mostrará uma lista de procedimentos, mas mostra todos eles, em todo o servidor.
Se você deseja ver apenas aqueles em um único banco de dados, tente o seguinte:
SHOW PROCEDURE STATUS WHERE Db = 'databasename';
Minha preferência é por algo que:
Reunindo outras respostas neste tópico, termino com
select
name, type
from
mysql.proc
where
db = database()
order by
type, name;
... o que resulta em resultados parecidos com o seguinte:
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)
usa isto:
SHOW PROCEDURE STATUS;
Mostra todos os procedimentos armazenados:
SHOW PROCEDURE STATUS;
Mostra todas as funções:
SHOW FUNCTION STATUS;
Mostra a definição do procedimento especificado:
SHOW CREATE PROCEDURE [PROC_NAME];
Mostra todos os procedimentos do banco de dados fornecido:
SHOW PROCEDURE STATUS WHERE Db = '[db_name]';
Uma variação na postagem de Praveenkumar_V:
SELECT `name` FROM mysql.proc WHERE db = 'dbname' AND `type` = 'PROCEDURE';
SELECT `name` FROM mysql.proc WHERE db = 'dbname' AND `type` = 'FUNCTION';
..e isso porque eu precisava economizar tempo depois de algumas tarefas domésticas:
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';
Para mostrar apenas o seu:
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'
Se você deseja listar o Procedimento de armazenamento para o banco de dados selecionado atual,
SHOW PROCEDURE STATUS WHERE Db = DATABASE();
Ele listará rotinas com base no banco de dados selecionado atual
ATUALIZADO para listar as funções em seu banco de dados
select * from information_schema.ROUTINES where ROUTINE_SCHEMA="YOUR DATABASE NAME" and ROUTINE_TYPE="FUNCTION";
para listar rotinas / procedimentos de armazenamento em seu banco de dados,
select * from information_schema.ROUTINES where ROUTINE_SCHEMA="YOUR DATABASE NAME" and ROUTINE_TYPE="PROCEDURE";
para listar tabelas em seu banco de dados,
select * from information_schema.TABLES WHERE TABLE_TYPE="BASE TABLE" AND TABLE_SCHEMA="YOUR DATABASE NAME";
para listar visualizações no seu banco de dados,
Método 1:
select * from information_schema.TABLES WHERE TABLE_TYPE="VIEW" AND TABLE_SCHEMA="YOUR DATABASE NAME";
método 2:
select * from information_schema.VIEWS WHERE TABLE_SCHEMA="YOUR DATABASE NAME";
Minha renderização favorita da lista de procedimentos do banco de dados atual: nome, lista de parâmetros, comentário
SELECT specific_name AS name, param_list AS params, `comment`
FROM mysql.proc
WHERE db = DATABASE()
AND type = 'PROCEDURE';
Adicione retornos para funções:
SELECT specific_name AS name, param_list AS params, `returns`, `comment`
FROM mysql.proc
WHERE db = DATABASE()
AND type = 'FUNCTION';
Listar procedimentos e funções do usuário para todos os bancos de dados :
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`
;
Liste os procedimentos e funções do usuário para o banco de dados em uso :
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`
;
object_name(@@procid)
no SSMS algo assim no MySql?