sql >> データベース >  >> RDS >> MariaDB

MariaDBにすべてのストアドプロシージャを一覧表示する方法

    MariaDBでは、SHOW PROCEDURE STATUSを使用できます ストアドプロシージャのリストを返すコマンド。

    information_schema.routinesをクエリすることもできます 同じことをするためのテーブル。

    SHOW PROCEDURE STATUS コマンド

    すべてのストアドプロシージャを一覧表示する最も簡単な方法は、SHOW PROCEDURE STATUSを使用することです。 コマンド。

    以下を実行するだけで、すべてのストアドプロシージャが一覧表示されます。

    SHOW PROCEDURE STATUS;

    構文は次のようになります:

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

    したがって、LIKEを使用できます 句またはWHERE 結果を絞り込むための句。

    例:

    SHOW PROCEDURE STATUS LIKE 'film%';

    結果:

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

    ストアドプロシージャのリストを取得する別の方法は、information_schema.routinesにクエリを実行することです。 テーブル。

    例:

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

    結果:

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

    このテーブルには、格納されている関数に関する情報も格納されています。上記の例では、WHEREを使用してそれらを除外しました ストアドプロシージャ(つまり、routine_typeを持つオブジェクト)のみを返す句 PROCEDUREの 。

    保存された関数を含めるために、WHEREを削除できます 条項:

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

    結果:

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

    この場合、routine_typeも追加しました 手順と機能を区別できるように列を作成します。

    必要に応じて、特定のデータベースを結果から除外することもできます。

    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;

    結果:

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

    または、特定のデータベースに絞り込むこともできます:

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

    結果:

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

    1. 整数のリストをC#からOracleストアドプロシージャに渡します

    2. SQL Server(T-SQL)のプロファイルからデータベースメールアカウントを削除する方法

    3. プロアクティブなSQLServerヘルスチェック、パート2:メンテナンス

    4. 別のテーブルの番号に基づいて、1つのテーブルに複数の行を挿入します