sql >> Databáze >  >> RDS >> MariaDB

2 způsoby, jak zobrazit seznam všech funkcí v MariaDB

Níže jsou dvě možnosti, jak vrátit seznam funkcí v MariaDB.

SHOW FUNCTION STATUS Příkaz

Nejrychlejší způsob, jak vypsat všechny funkce, je použít SHOW FUNCTION STATUS příkaz.

Pro zobrazení seznamu všech funkcí jednoduše spusťte následující:

SHOW FUNCTION STATUS;

Syntaxe vypadá takto:

SHOW FUNCTION STATUS
    [LIKE 'pattern' | WHERE expr]

Můžete tedy použít LIKE nebo WHERE klauzule pro zúžení výsledků.

Příklad:

SHOW FUNCTION STATUS LIKE '%customer%';

Příklad výsledku:

+--------+----------------------------+----------+------------------+---------------------+---------------------+---------------+---------+----------------------+----------------------+--------------------+
| 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-13 07:26:47 | 2021-11-13 07:26:47 | DEFINER       |         | utf8mb4              | utf8mb4_general_ci   | utf8mb4_general_ci |
| sakila | inventory_held_by_customer | FUNCTION | [email protected] | 2021-11-13 07:26:47 | 2021-11-13 07:26:47 | DEFINER       |         | utf8mb4              | utf8mb4_general_ci   | utf8mb4_general_ci |
+--------+----------------------------+----------+------------------+---------------------+---------------------+---------------+---------+----------------------+----------------------+--------------------+

Můžeme použít WHERE klauzule pro filtrování výsledků podle sloupců. Můžeme například filtrovat výsledky do dané databáze:

SHOW FUNCTION STATUS WHERE db = 'music';

Příklad výsledku:

+-------+------+----------+------------------+---------------------+---------------------+---------------+---------+----------------------+----------------------+--------------------+
| Db    | Name | Type     | Definer          | Modified            | Created             | Security_type | Comment | character_set_client | collation_connection | Database Collation |
+-------+------+----------+------------------+---------------------+---------------------+---------------+---------+----------------------+----------------------+--------------------+
| music | test | FUNCTION | [email protected] | 2021-11-27 09:46:25 | 2021-11-27 09:46:25 | DEFINER       |         | utf8                 | utf8_general_ci      | utf8mb4_general_ci |
+-------+------+----------+------------------+---------------------+---------------------+---------------+---------+----------------------+----------------------+--------------------+

SHOW FUNCTION STATUS příkaz funguje velmi podobně jako SHOW PROCEDURE STATUS příkaz, který vrátí seznam uložených procedur.

information_schema.routines Tabulka

Dalším způsobem, jak získat seznam funkcí v MariaDB, je dotaz na information_schema.routines tabulka.

Příklad:

SELECT 
    routine_schema as "Database",
    routine_name
FROM 
    information_schema.routines
WHERE 
    routine_type = 'FUNCTION'
ORDER BY 
    routine_schema ASC, 
    routine_name ASC;

Příklad výsledku:

+----------+----------------------------+
| Database | routine_name               |
+----------+----------------------------+
| music    | test                       |
| sakila   | get_customer_balance       |
| sakila   | inventory_held_by_customer |
| sakila   | inventory_in_stock         |
+----------+----------------------------+

Tato tabulka také ukládá informace o uložených procedurách. Ve výše uvedeném příkladu jsem je vyloučil pomocí WHERE klauzule k vrácení pouze funkcí (tj. objektů s routine_type z FUNCTION ).

Chcete-li zahrnout uložené procedury, můžeme odstranit WHERE klauzule:

SELECT 
    routine_schema as "Database",
    routine_name,
    routine_type
FROM 
    information_schema.routines
ORDER BY 
    routine_schema ASC, 
    routine_name ASC;

V tomto případě jsem také přidal routine_type abychom mohli rozlišovat mezi procedurami a funkcemi.

Můžeme to také zúžit na konkrétní databázi:

SELECT 
    routine_schema as "Database",
    routine_name,
    routine_type
FROM 
    information_schema.routines
WHERE 
    routine_schema = 'sakila'
ORDER BY 
    routine_name ASC;

Výsledek:

+----------+----------------------------+--------------+
| 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    |
+----------+----------------------------+--------------+

  1. Sladění nabídky a poptávky – Řešení, část 2

  2. Nastavení Django na používání MySQL

  3. Nechvalně známá výjimka java.sql.SQL:Nebyl nalezen žádný vhodný ovladač

  4. Spouštění dotazů analýzy velkých dat pomocí SQL a Presto