Di seguito sono riportate due opzioni che possiamo utilizzare per restituire un elenco di funzioni in MySQL.
Il SHOW FUNCTION STATUS
Comando
Il modo più rapido per elencare tutte le funzioni è utilizzare SHOW FUNCTION STATUS
comando.
Eseguire quanto segue per elencare tutte le funzioni:
SHOW FUNCTION STATUS;
La sintassi è questa:
SHOW FUNCTION STATUS
[LIKE 'pattern' | WHERE expr]
Quindi puoi usare un LIKE
o WHERE
clausola per restringere i risultati.
Esempio:
SHOW FUNCTION STATUS LIKE '%test%';
Esempio di risultato:
+----------+---------------+----------+----------------+---------------------+---------------------+---------------+---------+----------------------+----------------------+--------------------+ | Db | Name | Type | Definer | Modified | Created | Security_type | Comment | character_set_client | collation_connection | Database Collation | +----------+---------------+----------+----------------+---------------------+---------------------+---------------+---------+----------------------+----------------------+--------------------+ | PetHotel | test_function | FUNCTION | [email protected] | 2021-11-29 08:09:26 | 2021-11-29 08:09:26 | DEFINER | | utf8mb4 | utf8mb4_0900_ai_ci | utf8mb4_0900_ai_ci | +----------+---------------+----------+----------------+---------------------+---------------------+---------------+---------+----------------------+----------------------+--------------------+
Possiamo usare il WHERE
clausola per filtrare i risultati in base alle colonne. Ad esempio, possiamo filtrare i risultati in un determinato database:
SHOW FUNCTION STATUS WHERE db = 'sakila';
Esempio di risultato:
+--------+----------------------------+----------+----------------+---------------------+---------------------+---------------+---------+----------------------+----------------------+--------------------+ | Db | Name | Type | Definer | Modified | Created | Security_type | Comment | character_set_client | collation_connection | Database Collation | +--------+----------------------------+----------+----------------+---------------------+---------------------+---------------+---------+----------------------+----------------------+--------------------+ | sakila | get_customer_balance | FUNCTION | [email protected] | 2021-11-29 08:04:31 | 2021-11-29 08:04:31 | DEFINER | | utf8mb4 | utf8mb4_0900_ai_ci | utf8mb4_0900_ai_ci | | sakila | inventory_held_by_customer | FUNCTION | [email protected] | 2021-11-29 08:04:31 | 2021-11-29 08:04:31 | DEFINER | | utf8mb4 | utf8mb4_0900_ai_ci | utf8mb4_0900_ai_ci | | sakila | inventory_in_stock | FUNCTION | [email protected] | 2021-11-29 08:04:31 | 2021-11-29 08:04:31 | DEFINER | | utf8mb4 | utf8mb4_0900_ai_ci | utf8mb4_0900_ai_ci | +--------+----------------------------+----------+----------------+---------------------+---------------------+---------------+---------+----------------------+----------------------+--------------------+
Il SHOW FUNCTION STATUS
il comando funziona in modo molto simile a SHOW PROCEDURE STATUS
comando, che restituisce un elenco di stored procedure.
Il information_schema.routines
Tabella
Un altro modo per ottenere un elenco di funzioni in MySQL è interrogare information_schema.routines
tabella.
Esempio:
SELECT
routine_schema as "Database",
routine_name
FROM
information_schema.routines
WHERE
routine_type = 'FUNCTION'
ORDER BY
routine_schema ASC,
routine_name ASC;
Questa tabella memorizza anche le informazioni sulle procedure memorizzate. Nell'esempio sopra, li ho esclusi usando un WHERE
clausola per restituire solo funzioni (cioè oggetti con un routine_type
di FUNCTION
).
Per includere le stored procedure possiamo rimuovere il WHERE
clausola:
SELECT
routine_schema as "Database",
routine_name,
routine_type
FROM
information_schema.routines
ORDER BY
routine_schema ASC,
routine_name ASC;
In questo caso ho anche aggiunto il routine_type
colonna in modo da poter distinguere tra le procedure e le funzioni.
Possiamo anche restringerlo a un database specifico:
SELECT
routine_schema as "Database",
routine_name,
routine_type
FROM
information_schema.routines
WHERE
routine_schema = 'pethotel'
ORDER BY
routine_name ASC;
Esempio di risultato:
+----------+---------------+--------------+ | Database | ROUTINE_NAME | ROUTINE_TYPE | +----------+---------------+--------------+ | PetHotel | spGetAllPets | PROCEDURE | | PetHotel | spGetPetById | PROCEDURE | | PetHotel | test_function | FUNCTION | +----------+---------------+--------------+