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

PostgreSQLデータベースにすべてのストアドプロシージャを一覧表示する3つの方法

    Postgresデータベース内のすべてのストアドプロシージャを一覧表示するための3つのオプションがあります。

    information_schema.routines 表示

    このビューには、現在のユーザーが(所有者であるか何らかの特権を持っていることによって)アクセスできる現在のデータベース内のすべての関数とプロシージャが含まれています。

    ストアドプロシージャのリストを返す例は次のとおりです。

    SELECT
        routine_schema,
        routine_name
    FROM 
        information_schema.routines
    WHERE 
        routine_type = 'PROCEDURE';

    必要に応じて、列を追加してください。プロシージャの定義は、routine_definitionで取得できます。 列。

    pg_proc カタログ

    pg_catalog.pg_proc カタログには、関数、プロシージャ、集計関数、およびウィンドウ関数に関する情報が格納されています。

    これをpg_catalog.pg_namespaceと結合できます publicを使用するプロシージャのみに結果をフィルタリングするカタログ 名前空間:

    SELECT
        n.nspname,
        p.proname
    FROM 
        pg_catalog.pg_namespace n
    JOIN 
        pg_catalog.pg_proc p ON 
        p.pronamespace = n.oid
    WHERE 
        p.prokind = 'p'
    AND
        n.nspname = 'public';

    prokindにフィルタリングしました pの 結果をストアドプロシージャに制限します。

    可能な値はfです。 通常の機能の場合、p 手順については、a 集計関数の場合、またはw ウィンドウ関数の場合。

    p.prosrcを追加できます プロシージャの定義を取得するための列。または、p.oidを渡すこともできます pg_get_functiondef()への列 働き。この関数は、CREATE OR REPLACE PROCEDUREを生成します ストアドプロシージャのステートメント。

    \df コマンド

    psqlを使用する場合、\dfを使用できます コマンド:

    \df

    デフォルトでは、これはユーザーが作成したオブジェクトのみを返します。または、パターンまたはSを指定することもできます システムオブジェクトを含めるための修飾子。

    パターンを提供する例を次に示します。

    \df *album*

    この例では、結果をalbumというテキストを含む関数/プロシージャのみに絞り込みます。 彼らの名前で。

    このコマンドは関数も返すことに注意してください。ルーチンタイプ(例:funcproc )はtypeにリストされています 出力の列。


    1. Djangoプロジェクトをsqlite3バックエンドからpostgresqlに切り替えると、データダンプの読み込みに失敗します

    2. count(*)によるテーブルのOracle行数とDBA_TABLESのNUM_ROWS

    3. MySQLは、1つのテーブルを除くすべての特権をデータベースに付与します

    4. OracleDatabaseのすべての関数を一覧表示します