sql >> Databasteknik >  >> RDS >> MariaDB

2 sätt att lista alla funktioner i MariaDB

Nedan finns två alternativ för att returnera en lista med funktioner i MariaDB.

SHOW FUNCTION STATUS Kommando

Det snabbaste sättet att lista ut alla funktioner är att använda SHOW FUNCTION STATUS kommando.

Kör helt enkelt följande för att lista ut alla funktioner:

SHOW FUNCTION STATUS;

Syntaxen ser ut så här:

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

Så du kan använda en LIKE eller WHERE klausul för att begränsa resultaten.

Exempel:

SHOW FUNCTION STATUS LIKE '%customer%';

Exempelresultat:

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

Vi kan använda WHERE sats för att filtrera resultaten efter kolumner. Till exempel kan vi filtrera resultaten till en given databas:

SHOW FUNCTION STATUS WHERE db = 'music';

Exempelresultat:

+-------+------+----------+------------------+---------------------+---------------------+---------------+---------+----------------------+----------------------+--------------------+
| 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 kommandot fungerar mycket som SHOW PROCEDURE STATUS kommando, som returnerar en lista över lagrade procedurer.

information_schema.routines Tabell

Ett annat sätt att få en lista över funktioner i MariaDB är att fråga information_schema.routines bord.

Exempel:

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

Exempelresultat:

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

Den här tabellen lagrar också information om lagrade procedurer. I exemplet ovan uteslöt jag dessa genom att använda en WHERE sats för att endast returnera funktioner (d.v.s. objekt med en routine_type av FUNCTION ).

För att inkludera lagrade procedurer kan vi ta bort WHERE klausul:

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

I det här fallet lade jag också till routine_type kolumn så att vi kan skilja mellan procedurerna och funktionerna.

Vi kan också begränsa den till en specifik databas:

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

Resultat:

+----------+----------------------------+--------------+
| 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. Ta reda på vilken valutasymbol din session använder i Oracle

  2. IS NOT NULL-testet för en post returnerar inte TRUE när variabeln är inställd

  3. Hur skapar man en främmande nyckel med ON UPDATE CASCADE på Oracle?

  4. Hur hämtar man det aktuella värdet av en orakelsekvens utan att öka den?