Di bawah ini adalah dua opsi yang dapat kita gunakan untuk mengembalikan daftar fungsi di MySQL.
The SHOW FUNCTION STATUS
Perintah
Cara tercepat untuk membuat daftar semua fungsi adalah dengan menggunakan SHOW FUNCTION STATUS
perintah.
Jalankan yang berikut ini untuk membuat daftar semua fungsi:
SHOW FUNCTION STATUS;
Sintaksnya seperti ini:
SHOW FUNCTION STATUS
[LIKE 'pattern' | WHERE expr]
Jadi Anda dapat menggunakan LIKE
atau WHERE
klausa untuk mempersempit hasil.
Contoh:
SHOW FUNCTION STATUS LIKE '%test%';
Contoh hasil:
+----------+---------------+----------+----------------+---------------------+---------------------+---------------+---------+----------------------+----------------------+--------------------+ | 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 | +----------+---------------+----------+----------------+---------------------+---------------------+---------------+---------+----------------------+----------------------+--------------------+
Kita dapat menggunakan WHERE
klausa untuk memfilter hasil menurut kolom. Misalnya, kita dapat memfilter hasil ke database yang diberikan:
SHOW FUNCTION STATUS WHERE db = 'sakila';
Contoh hasil:
+--------+----------------------------+----------+----------------+---------------------+---------------------+---------------+---------+----------------------+----------------------+--------------------+ | 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 | +--------+----------------------------+----------+----------------+---------------------+---------------------+---------------+---------+----------------------+----------------------+--------------------+
SHOW FUNCTION STATUS
perintah bekerja sangat mirip dengan SHOW PROCEDURE STATUS
perintah, yang mengembalikan daftar prosedur tersimpan.
information_schema.routines
Tabel
Cara lain untuk mendapatkan daftar fungsi di MySQL adalah dengan menanyakan information_schema.routines
tabel.
Contoh:
SELECT
routine_schema as "Database",
routine_name
FROM
information_schema.routines
WHERE
routine_type = 'FUNCTION'
ORDER BY
routine_schema ASC,
routine_name ASC;
Tabel ini juga menyimpan informasi tentang prosedur tersimpan. Dalam contoh di atas, saya mengecualikan mereka dengan menggunakan WHERE
klausa untuk mengembalikan fungsi saja (yaitu objek dengan routine_type
dari FUNCTION
).
Untuk menyertakan prosedur tersimpan, kami dapat menghapus WHERE
klausa:
SELECT
routine_schema as "Database",
routine_name,
routine_type
FROM
information_schema.routines
ORDER BY
routine_schema ASC,
routine_name ASC;
Dalam hal ini saya juga menambahkan routine_type
kolom sehingga kita dapat membedakan antara prosedur dan fungsi.
Kami juga dapat mempersempitnya ke database tertentu:
SELECT
routine_schema as "Database",
routine_name,
routine_type
FROM
information_schema.routines
WHERE
routine_schema = 'pethotel'
ORDER BY
routine_name ASC;
Contoh hasil:
+----------+---------------+--------------+ | Database | ROUTINE_NAME | ROUTINE_TYPE | +----------+---------------+--------------+ | PetHotel | spGetAllPets | PROCEDURE | | PetHotel | spGetPetById | PROCEDURE | | PetHotel | test_function | FUNCTION | +----------+---------------+--------------+