简体   繁体   中英

How can create one function from two functions in PostgreSQL?

I would like to create another function in PostgreSQL, function_c, from function_a and function_b.

function_a

CREATE OR REPLACE FUNCTION function_a(year_ INTEGER, col_b INTEGER)
RETURNS INTEGER AS
$$
DECLARE 
    vbl INTEGER;
BEGIN 
    SELECT COUNT(col_b) INTO vbl
    FROM table1
    WHERE date_part('year',table1.col_aa) = year_ AND table1.col_bb = col_b;
    RETURN vbl; 
END;
$$  
LANGUAGE plpgsql;

function_b



CREATE OR REPLACE FUNCTION function_b(year_ INTEGER)
RETURNS INTEGER AS
$$
DECLARE 
    vbl_b integer;
BEGIN 
    SELECT COUNT(col_aa) INTO vble_b
    FROM table1
    WHERE date_part('year',table1.col_aa) = year_;
    RETURN vbl_b
END;
$$  
LANGUAGE plpgsql;

I want to create function c that including function a and b, returns: year: year_ parameter of function_b median: vbl of function_a divided vbl_b of function_b

How can create one function from two functions in PostgreSQL?

If I understood correctly below mentioned definition will work for you

CREATE OR REPLACE FUNCTION function_c(year_ INTEGER, col_b INTEGER)
RETURNS table (year1 integer, median numeric) AS
$$
DECLARE 
    var1 INTEGER;
    var2 INTEGER;
    var3 numeric;
BEGIN 
var1=(select * from function_a(year_));
var2=(select * from function_b(year_, vol_b));
var3=var1/var2;

return query
select year_, var3;

END;
$$  
LANGUAGE plpgsql;

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM