Je veux que ce soit comme ça:

CREATE OR REPLACE PROCEDURE public.test_sp1
    (f1 integer, f2 character varying(20)) 
LANGUAGE plpgsql 
AS 
    $$ DECLARE min_val int; 
BEGIN 
    DROP TABLE IF EXISTS tmp_tbl; 

    CREATE TEMP TABLE tmp_tbl(id int); 

    INSERT INTO tmp_tbl 
    VALUES (f1), (10001), (10002); 

    SELECT INTO min_val MIN(id) 
    FROM tmp_tbl; 

    RAISE INFO 'min_val = %, f2 = %', min_val, f2; 
END;  
$$

Merci beaucoup!

0
user15280991 25 févr. 2021 à 10:48

1 réponse

Meilleure réponse

Vous pouvez obtenir la source directement à partir de pg_proc.

SELECT prosrc FROM pg_proc WHERE proname = 'sp_example';
--                               prosrc
-----------------------------------------------------------------------------
-- CREATE OR REPLACE PROCEDURE public.sp_example(arg1 character varying(512)…

Alternativement, en utilisant psql, vous pouvez lister toutes les fonctions et procédures avec \df, qui montre les types de données d'argument

\df
-- schema |    name    | result data type  | argument data types | type
----------+------------+-------------------+---------------------+------
-- public | f_example  | character varying | integer             | func
-- public | sp_example | -                 | character varying   | func

Ensuite, vous pouvez utiliser SHOW PROCEDURE pour obtenir le DDL complet.

SHOW PROCEDURE sp_example ( character varying );
--                     Stored Procedure Definition
-----------------------------------------------------------------------------
-- CREATE OR REPLACE PROCEDURE public.sp_example(arg1 character varying(512)…
0
Joe Harris 25 févr. 2021 à 14:12