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

MySQLですべてのストアドプロシージャを一覧表示する2つの方法

    以下は、MySQLでストアドプロシージャの完全なリストを返すための2つのオプションです。

    SHOW PROCEDURE STATUS コマンド

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

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

    SHOW PROCEDURE STATUS;

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

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

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

    例:

    SHOW PROCEDURE STATUS LIKE 'albums%';

    結果:

    +-------+------------------------+-----------+----------------+---------------------+---------------------+---------------+---------+----------------------+----------------------+--------------------+
    | Db    | Name                   | Type      | Definer        | Modified            | Created             | Security_type | Comment | character_set_client | collation_connection | Database Collation |
    +-------+------------------------+-----------+----------------+---------------------+---------------------+---------------+---------+----------------------+----------------------+--------------------+
    | Music | spAlbumsByGenre        | PROCEDURE | [email protected] | 2021-11-13 13:09:26 | 2021-11-13 13:09:26 | DEFINER       |         | utf8mb4              | utf8mb4_0900_ai_ci   | utf8mb4_0900_ai_ci |
    | Music | spAlbumsFromArtistId   | PROCEDURE | [email protected] | 2021-11-13 13:03:25 | 2021-11-13 13:03:25 | DEFINER       |         | utf8mb4              | utf8mb4_0900_ai_ci   | utf8mb4_0900_ai_ci |
    | Music | spAlbumsFromArtistName | PROCEDURE | [email protected] | 2021-11-13 13:03:48 | 2021-11-13 13:03:48 | DEFINER       |         | utf8mb4              | utf8mb4_0900_ai_ci   | utf8mb4_0900_ai_ci |
    +-------+------------------------+-----------+----------------+---------------------+---------------------+---------------+---------+----------------------+----------------------+--------------------+

    information_schema.routines

    MySQLのストアドプロシージャのリストを取得する別の方法は、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;

    このテーブルには、格納されている関数に関する情報も格納されています。上記の例では、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;

    この場合、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 |
    +----------+------------------------+--------------+
    | Music    | spAlbumsByGenre        | PROCEDURE    |
    | Music    | spAlbumsFromArtistId   | PROCEDURE    |
    | Music    | spAlbumsFromArtistName | PROCEDURE    |
    | Music    | spArtistFromId         | PROCEDURE    |
    | PetHotel | spGetAllPets           | PROCEDURE    |
    | PetHotel | spGetPetById           | PROCEDURE    |
    +----------+------------------------+--------------+

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

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

    結果:

    +----------+------------------------+--------------+
    | Database | ROUTINE_NAME           | ROUTINE_TYPE |
    +----------+------------------------+--------------+
    | Music    | spAlbumsByGenre        | PROCEDURE    |
    | Music    | spAlbumsFromArtistId   | PROCEDURE    |
    | Music    | spAlbumsFromArtistName | PROCEDURE    |
    | Music    | spArtistFromId         | PROCEDURE    |
    +----------+------------------------+--------------+

    1. OracleSQLAnalyticクエリ-再帰的なスプレッドシートのような累計

    2. PostgreSQLで月名を月番号に変換する

    3. パラメータをOracleDynamicSQLにバインドする

    4. 1つのクエリphpに複数のmysqlINSERTステートメント