Come è possibile visualizzare l'elenco delle stored procedure o delle funzioni memorizzate nella riga di comando mysql come show tables;
o show databases;
.Elenco delle stored procedure/funzioni Command Line Mysql
risposta
SHOW PROCEDURE STATUS;
SHOW FUNCTION STATUS;
show procedure status
vi mostrerà le stored procedure.
show create procedure MY_PROC
mostrerà la definizione di una procedura. E
help show
vi mostrerà tutte le opzioni disponibili per il comando show
.
non funziona. – Codler
Come indicato da Codler, la visualizzazione della guida non funziona in quanto l'aiuto è un'istruzione della riga di comando mysql. Per ottenere maggiori informazioni sul comando SHOW, andare direttamente alla pagina di documentazione di MySQL all'indirizzo: http://dev.mysql.com/doc/refman/5.1/en/show.html – IvanD
Beh, non sono sicuro del perché lo dici, help show funziona bene per me usando MySQL 5.0.95 su centos 6.3 – h4unt3r
uso questo:
SHOW PROCEDURE STATUS;
Come accennato in precedenza,
show procedure status;
sarà davvero mostrare un elenco di procedure, ma mostra tutte di loro, a livello di server.
Se volete vedere solo quelli in un unico database, provate questo:
SHOW PROCEDURE STATUS WHERE Db = 'databasename';
questo funziona bene per me ...! –
Allo stesso modo, SHOW FUNCTION STATUS WHERE Db = 'nomedatabase'; ti dà le funzioni. –
Un modo più specifico:
SHOW PROCEDURE STATUS
WHERE Db = DATABASE() AND Type = 'PROCEDURE'
funzionerà senza utilizzare AND Type = 'PROCEDURE' anche, – normalUser
Per la procedura vista in nome saggio
select name from mysql.proc
sotto il codice utilizzato per elencare tutta la procedura e sotto il codice è dare lo stesso risultato come lo stato della procedura di spettacolo
select * from mysql.proc
+1 per mostrare il nome solo modo! –
questa è una presentazione molto più pulita rispetto agli altri, specialmente se si è in un terminale più piccolo. Grazie. – user1527227
Per mostrare solo tua:
SELECT
db, type, specific_name, param_list, returns
FROM
mysql.proc
WHERE
definer LIKE
CONCAT('%', CONCAT((SUBSTRING_INDEX((SELECT user()), '@', 1)), '%'));
Perché modificare in maiuscolo? È una convenzione? –
È convenzione comune inserire parole chiave SQL in maiuscolo, inserendo nomi di colonne, nomi di tabelle, ecc. In lettere minuscole. – Sagar
Alternativa:
SELECT * FROM INFORMATION_SCHEMA.ROUTINES
show procedure status;
utilizzare questo comando è possibile vedere le tutte le procedure nei database
una variazione sul Praveenkumar_V di post:
SELECT `name` FROM mysql.proc WHERE db = 'dbname' AND `type` = 'PROCEDURE';
SELECT `name` FROM mysql.proc WHERE db = 'dbname' AND `type` = 'FUNCTION';
..e questo perché avevo bisogno di risparmiare tempo dopo un po 'di pulizia:
SELECT CONCAT(
"GRANT EXECUTE ON PROCEDURE `"
,`name`
,"` TO [email protected]'%'; -- "
,`comment`
)
FROM mysql.proc
WHERE db = 'dbname'
AND `type` = 'PROCEDURE';
SELECT CONCAT(
"GRANT EXECUTE ON FUNCTION `"
,`name`
,"` TO [email protected]'%'; -- "
,`comment`
)
FROM mysql.proc
WHERE db = 'dbname'
AND `type` = 'FUNCTION';
SELECT specific_name FROM `information_schema`.`ROUTINES` WHERE routine_schema='database_name'
utilizzare la seguente query per tutte le procedure:
select * from sysobjects
where type='p'
order by crdate desc
La mia preferenza è per qualcosa che:
- Elenca entrambe le funzioni e le procedure,
- Mi consente di sapere quali sono quali,
- Dà i nomi delle procedure e dei tipi e nient'altro,
- filtra i risultati per il database corrente, non il definitore corrente
- Ordinamenti il risultato
cucire insieme da altre risposte a questo thread, finisco con
select
name, type
from
mysql.proc
where
db = database()
order by
type, name;
... che ti finisce con risultati che sembrano l ike questo:
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)
Risposta perfetta, grazie! –
Se si desidera elencare Procedura Store per la corrente database selezionato,
SHOW PROCEDURE STATUS WHERE Db = DATABASE();
elencherà routine sulla base delle attuali database selezionato
SHOW PROCEDURE STATUS;
mostra tutta la procedura di archiviazione.
SHOW FUNCTION STATUS;
mostra tutte le funzioni.
SHOW CREATE PROCEDURE [PROC_NAME];
mostrerà la definizione della procedura specificata.
SHOW PROCEDURE STATUS WHERE Db = '[db_name]';
vi mostrerà tutte le procedure del database data.
C'è un modo per trovare il nome della stored procedure corrente? Credo che sia 'object_name (@@ procid)' in SSMS qualcosa di simile in MySql? – xameeramir
Se l'utente ha il privilegio di 'ESEGUI', altrimenti mostrerà la lista vuota. La visualizzazione della guida di – mjb