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

MySQLのすべての関数を一覧表示する2つの方法

    以下は、MySQLの関数のリストを返すために使用できる2つのオプションです。

    SHOW FUNCTION STATUS コマンド

    すべての関数を一覧表示する最も簡単な方法は、SHOW FUNCTION STATUSを使用することです。 コマンド。

    以下を実行して、すべての機能を一覧表示します。

    SHOW FUNCTION STATUS;

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

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

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

    例:

    SHOW FUNCTION STATUS LIKE '%test%';

    結果の例:

    +----------+---------------+----------+----------------+---------------------+---------------------+---------------+---------+----------------------+----------------------+--------------------+
    | Db       | Name          | Type     | Definer        | Modified            | Created             | Security_type | Comment | character_set_client | collation_connection | Database Collation |
    +----------+---------------+----------+----------------+---------------------+---------------------+---------------+---------+----------------------+----------------------+--------------------+
    | PetHotel | test_function | FUNCTION | [email protected] | 2021-11-29 08:09:26 | 2021-11-29 08:09:26 | DEFINER       |         | utf8mb4              | utf8mb4_0900_ai_ci   | utf8mb4_0900_ai_ci |
    +----------+---------------+----------+----------------+---------------------+---------------------+---------------+---------+----------------------+----------------------+--------------------+

    WHEREを使用できます 結果を列でフィルタリングする句。たとえば、結果を特定のデータベースにフィルタリングできます。

    SHOW FUNCTION STATUS WHERE db = 'sakila';

    結果の例:

    +--------+----------------------------+----------+----------------+---------------------+---------------------+---------------+---------+----------------------+----------------------+--------------------+
    | 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-29 08:04:31 | 2021-11-29 08:04:31 | DEFINER       |         | utf8mb4              | utf8mb4_0900_ai_ci   | utf8mb4_0900_ai_ci |
    | sakila | inventory_held_by_customer | FUNCTION | [email protected] | 2021-11-29 08:04:31 | 2021-11-29 08:04:31 | DEFINER       |         | utf8mb4              | utf8mb4_0900_ai_ci   | utf8mb4_0900_ai_ci |
    | sakila | inventory_in_stock         | FUNCTION | [email protected] | 2021-11-29 08:04:31 | 2021-11-29 08:04:31 | DEFINER       |         | utf8mb4              | utf8mb4_0900_ai_ci   | utf8mb4_0900_ai_ci |
    +--------+----------------------------+----------+----------------+---------------------+---------------------+---------------+---------+----------------------+----------------------+--------------------+

    SHOW FUNCTION STATUS コマンドは、SHOW PROCEDURE STATUSと非常によく似ています。 コマンド。ストアドプロシージャのリストを返します。

    information_schema.routines

    MySQLの関数のリストを取得する別の方法は、information_schema.routinesにクエリを実行することです。 テーブル。

    例:

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

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

    ストアドプロシージャを含めるために、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 = 'pethotel'
    ORDER BY 
        routine_name ASC;

    サンプル結果:

    +----------+---------------+--------------+
    | Database | ROUTINE_NAME  | ROUTINE_TYPE |
    +----------+---------------+--------------+
    | PetHotel | spGetAllPets  | PROCEDURE    |
    | PetHotel | spGetPetById  | PROCEDURE    |
    | PetHotel | test_function | FUNCTION     |
    +----------+---------------+--------------+


    1. AndroidSQLiteデータベースとアプリのアップデート

    2. 挿入できません:エラー:配列値は{またはディメンション情報で始まる必要があります

    3. ポート5432がブロックされている場合のリモートサーバーからのpg_dumppostgresデータベース

    4. 配列パラメータをネイティブクエリにバインドします