Di bawah ini adalah dua opsi untuk mengembalikan daftar fungsi di MariaDB.
The SHOW FUNCTION STATUS Perintah
Cara tercepat untuk membuat daftar semua fungsi adalah dengan menggunakan SHOW FUNCTION STATUS perintah.
Cukup jalankan yang berikut 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 '%customer%'; Contoh hasil:
+--------+----------------------------+----------+------------------+---------------------+---------------------+---------------+---------+----------------------+----------------------+--------------------+ | Db | Name | Type | Definer | Modified | Created | Security_type | Comment | character_set_client | collation_connection | Database Collation | +--------+----------------------------+----------+------------------+---------------------+---------------------+---------------+---------+----------------------+----------------------+--------------------+ | sakila | get_customer_balance | FUNCTION | example@sqldat.com | 2021-11-13 07:26:47 | 2021-11-13 07:26:47 | DEFINER | | utf8mb4 | utf8mb4_general_ci | utf8mb4_general_ci | | sakila | inventory_held_by_customer | FUNCTION | example@sqldat.com | 2021-11-13 07:26:47 | 2021-11-13 07:26:47 | DEFINER | | utf8mb4 | utf8mb4_general_ci | utf8mb4_general_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 = 'music'; Contoh hasil:
+-------+------+----------+------------------+---------------------+---------------------+---------------+---------+----------------------+----------------------+--------------------+ | Db | Name | Type | Definer | Modified | Created | Security_type | Comment | character_set_client | collation_connection | Database Collation | +-------+------+----------+------------------+---------------------+---------------------+---------------+---------+----------------------+----------------------+--------------------+ | music | test | FUNCTION | example@sqldat.com | 2021-11-27 09:46:25 | 2021-11-27 09:46:25 | DEFINER | | utf8 | utf8_general_ci | utf8mb4_general_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 MariaDB 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; Contoh hasil:
+----------+----------------------------+ | Database | routine_name | +----------+----------------------------+ | music | test | | sakila | get_customer_balance | | sakila | inventory_held_by_customer | | sakila | inventory_in_stock | +----------+----------------------------+
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 = 'sakila'
ORDER BY
routine_name ASC; Hasil:
+----------+----------------------------+--------------+ | Database | routine_name | routine_type | +----------+----------------------------+--------------+ | sakila | film_in_stock | PROCEDURE | | sakila | film_not_in_stock | PROCEDURE | | sakila | get_customer_balance | FUNCTION | | sakila | inventory_held_by_customer | FUNCTION | | sakila | inventory_in_stock | FUNCTION | | sakila | rewards_report | PROCEDURE | +----------+----------------------------+--------------+