sql >> Database teknologi >  >> RDS >> PostgreSQL

Hvordan finder man alle brugerdefinerede (ikke udvidelsesrelaterede) funktioner?

Som kommenteret af @Craig, gemmes afhængigheder i pg_catalog.pg_depend .

Forespørgslen kan se sådan ud (Postgres 11 eller senere):

SELECT p.proname AS function_name , pg_get_function_identity_arguments(p.oid) AS parameter_list , pg_get_functiondef(p.oid) AS function_def -- CREATE FUNCTION statement FROM pg_proc p LEFT JOIN pg_depend d ON d.objid = p.oid AND d.deptype = 'e' -- would depend on extension WHERE p.pronamespace = 'public'::regnamespace -- your schema(s) of interest AND d.objid IS NULL -- no such dependency AND p.prokind = 'f'; -- only plain functions

Dette udelukker alle funktioner afhængigt af en udvidelse fra resultatet. Manualen om afhængighedstypen deptype = 'e' :

Og p.prokind = 'f' begrænser resultatet til almindelige funktioner. Manualen:

Det er nyt i Postgres 11. For Postgres 10 eller ældre brug i stedet:

SELECT ...
...
AND    NOT proisagg     -- no aggregate functions
AND    NOT proiswindow  -- no window functions
 

Der var ingen procedurer , endnu.

Find pg_get_function_identity_arguments() og pg_get_functiondef() i manualen her . Relateret:




  1. SQL opdatere en beregnet kolonne

  2. Find ud af, om et objekt er en fremmednøgle med OBJECTPROPERTY() i SQL Server

  3. PHP MYSQL:instant select + insert

  4. Udskriv rang fra sum i PHP &MySQL i 1,1,3,4 osv. rækkefølge