¿Cómo puedo ver la lista de los procedimientos almacenados o las funciones almacenadas en la línea de comandos de mysql como show tables;
o show databases;
comandos.
¿Cómo puedo ver la lista de los procedimientos almacenados o las funciones almacenadas en la línea de comandos de mysql como show tables;
o show databases;
comandos.
Respuestas:
show procedure status
le mostrará los procedimientos almacenados.
show create procedure MY_PROC
le mostrará la definición de un procedimiento. Y
help show
le mostrará todas las opciones disponibles para el show
comando.
Para ver el procedimiento en nombre sabio
select name from mysql.proc
el siguiente código se utiliza para enumerar todos los procedimientos y el siguiente código es el mismo resultado que mostrar el estado del procedimiento
select * from mysql.proc
select db,name,type from mysql.proc where db<>'sys';
para obtener un poco más de información y menos kruft del sistema incorporado.
Una forma más específica:
SHOW PROCEDURE STATUS
WHERE Db = DATABASE() AND Type = 'PROCEDURE'
Como se ha mencionado más arriba,
show procedure status;
De hecho, mostrará una lista de procedimientos, pero muestra todos ellos, en todo el servidor.
Si desea ver solo los que están en una sola base de datos, intente esto:
SHOW PROCEDURE STATUS WHERE Db = 'databasename';
Mi preferencia es por algo que:
Uniendo a partir de otras respuestas en este hilo, termino con
select
name, type
from
mysql.proc
where
db = database()
order by
type, name;
... que termina con resultados como este:
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)
utilizar este:
SHOW PROCEDURE STATUS;
Muestra todos los procedimientos almacenados:
SHOW PROCEDURE STATUS;
Muestra todas las funciones:
SHOW FUNCTION STATUS;
Muestra la definición del procedimiento especificado:
SHOW CREATE PROCEDURE [PROC_NAME];
Le muestra todos los procedimientos de la base de datos dada:
SHOW PROCEDURE STATUS WHERE Db = '[db_name]';
Una variación en la publicación 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';
..y esto porque necesitaba ahorrar tiempo después de algunas tareas de limpieza:
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 solo el tuyo:
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'
Si desea enumerar el Procedimiento de almacenamiento para la base de datos seleccionada actual,
SHOW PROCEDURE STATUS WHERE Db = DATABASE();
enumerará rutinas basadas en la base de datos seleccionada actual
ACTUALIZADO para enumerar las funciones en su base de datos
select * from information_schema.ROUTINES where ROUTINE_SCHEMA="YOUR DATABASE NAME" and ROUTINE_TYPE="FUNCTION";
para enumerar rutinas / procedimientos de almacenamiento en su base de datos,
select * from information_schema.ROUTINES where ROUTINE_SCHEMA="YOUR DATABASE NAME" and ROUTINE_TYPE="PROCEDURE";
para enumerar tablas en su base de datos,
select * from information_schema.TABLES WHERE TABLE_TYPE="BASE TABLE" AND TABLE_SCHEMA="YOUR DATABASE NAME";
para enumerar vistas en su base de datos,
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";
Mi representación favorita de la lista de procedimientos de la base de datos actual: nombre, lista de parámetros, comentario
SELECT specific_name AS name, param_list AS params, `comment`
FROM mysql.proc
WHERE db = DATABASE()
AND type = 'PROCEDURE';
Agregar devoluciones para funciones:
SELECT specific_name AS name, param_list AS params, `returns`, `comment`
FROM mysql.proc
WHERE db = DATABASE()
AND type = 'FUNCTION';
Enumere los procedimientos y funciones del usuario para todas las bases de datos :
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`
;
Enumere los procedimientos y funciones del usuario para la base de datos en 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)
en SSMS algo así en MySql?