MariaDB
 sql >> Teknologi Basis Data >  >> RDS >> MariaDB

Cara Mendaftar semua Prosedur Tersimpan di MariaDB

Di MariaDB, kita dapat menggunakan SHOW PROCEDURE STATUS perintah untuk mengembalikan daftar prosedur tersimpan.

Kami juga dapat menanyakan information_schema.routines tabel untuk melakukan hal yang sama.

The SHOW PROCEDURE STATUS Perintah

Cara termudah untuk membuat daftar semua prosedur tersimpan adalah dengan menggunakan SHOW PROCEDURE STATUS perintah.

Cukup jalankan yang berikut ini untuk membuat daftar semua prosedur tersimpan:

SHOW PROCEDURE STATUS;

Sintaksnya seperti ini:

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

Jadi Anda dapat menggunakan LIKE klausa atau WHERE klausa untuk mempersempit hasil.

Contoh:

SHOW PROCEDURE STATUS LIKE 'film%';

Hasil:

+--------+-------------------+-----------+------------------+---------------------+---------------------+---------------+---------+----------------------+----------------------+--------------------+
| Db     | Name              | Type      | Definer          | Modified            | Created             | Security_type | Comment | character_set_client | collation_connection | Database Collation |
+--------+-------------------+-----------+------------------+---------------------+---------------------+---------------+---------+----------------------+----------------------+--------------------+
| sakila | film_in_stock     | PROCEDURE | [email protected] | 2021-11-13 07:26:47 | 2021-11-13 07:26:47 | DEFINER       |         | utf8mb4              | utf8mb4_general_ci   | utf8mb4_general_ci |
| sakila | film_not_in_stock | PROCEDURE | [email protected] | 2021-11-13 07:26:47 | 2021-11-13 07:26:47 | DEFINER       |         | utf8mb4              | utf8mb4_general_ci   | utf8mb4_general_ci |
+--------+-------------------+-----------+------------------+---------------------+---------------------+---------------+---------+----------------------+----------------------+--------------------+

information_schema.routines Tabel

Cara lain untuk mendapatkan daftar prosedur tersimpan adalah dengan menanyakan information_schema.routines tabel.

Contoh:

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

Hasil:

+----------+--------------------+
| Database | routine_name       |
+----------+--------------------+
| mysql    | AddGeometryColumn  |
| mysql    | DropGeometryColumn |
| pethouse | spGetAllPets       |
| pethouse | spGetPetById       |
| sakila   | film_in_stock      |
| sakila   | film_not_in_stock  |
| sakila   | rewards_report     |
+----------+--------------------+

Tabel ini juga menyimpan informasi tentang fungsi yang disimpan. Dalam contoh di atas, saya mengecualikan mereka dengan menggunakan WHERE klausa untuk mengembalikan hanya prosedur tersimpan (yaitu objek dengan routine_type dari PROCEDURE ).

Untuk menyertakan fungsi yang disimpan, kita 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;

Hasil:

+----------+----------------------------+--------------+
| Database | routine_name               | routine_type |
+----------+----------------------------+--------------+
| mysql    | AddGeometryColumn          | PROCEDURE    |
| mysql    | DropGeometryColumn         | PROCEDURE    |
| pethouse | spGetAllPets               | PROCEDURE    |
| pethouse | spGetPetById               | PROCEDURE    |
| 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    |
+----------+----------------------------+--------------+

Dalam hal ini saya juga menambahkan routine_type kolom sehingga kita dapat membedakan antara prosedur dan fungsi.

Kami juga dapat mengecualikan database tertentu dari hasil jika kami ingin:

SELECT 
    routine_schema as "Database",
    routine_name,
    routine_type
FROM 
    information_schema.routines
WHERE 
    routine_schema NOT IN ('sys', 'information_schema', 'mysql', 'performance_schema')
ORDER BY 
    routine_schema ASC, 
    routine_name ASC;

Hasil:

+----------+----------------------------+--------------+
| Database | routine_name               | routine_type |
+----------+----------------------------+--------------+
| pethouse | spGetAllPets               | PROCEDURE    |
| pethouse | spGetPetById               | PROCEDURE    |
| 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    |
+----------+----------------------------+--------------+

Atau kita bisa mempersempitnya ke database tertentu:

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

Hasil:

+----------+--------------+--------------+
| Database | routine_name | routine_type |
+----------+--------------+--------------+
| pethouse | spGetAllPets | PROCEDURE    |
| pethouse | spGetPetById | PROCEDURE    |
+----------+--------------+--------------+

  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Menghindari Penguncian Vendor Database untuk MySQL atau MariaDB

  2. Bagaimana MID() Bekerja di MariaDB

  3. Perbaiki "ERROR 1250 (42000):Tabel '...' dari salah satu SELECT tidak dapat digunakan dalam klausa ORDER" di MariaDB

  4. MariaDB DATABASE() Dijelaskan

  5. Memantau Kinerja MariaDB di Cloud Hibrida