Quiero que sea así:

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;  
$$

¡Muchas gracias!

0
user15280991 25 feb. 2021 a las 10:48

1 respuesta

La mejor respuesta

Puede obtener la fuente directamente de pg_proc.

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

Alternativamente, usando psql, puede enumerar todas las funciones y procedimientos con \df, que muestra los tipos de datos de los argumentos

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

Luego, puede usar SHOW PROCEDURE para obtener el DDL completo.

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