plpgsql return select from multiple tables - Mailing list pgsql-general

From Artis Caune
Subject plpgsql return select from multiple tables
Date
Msg-id 9e20d71e0809100720p6aa7d6d1p8e95043fad6c8713@mail.gmail.com
Whole thread Raw
Responses Re: plpgsql return select from multiple tables
Re: plpgsql return select from multiple tables
List pgsql-general
Hi,

What is the correct way of writing plpgsql function which needs return
columns from multiple tables?

e.x.:
SELECT email FROM emails WHERE id = 1
SELECT backend FROM backends WHERE id = 1

I need plpgsql function return both email and backend in one line, like:
SELECT email, backend FROM ...


I do like this:

CREATE OR REPLACE FUNCTION get_user_data( INT )
RETURNS SETOF RECORD AS $$
DECLARE
    v_email RECORD;
    v_backend RECORD;
BEGIN
    SELECT email
      INTO v_email
      FROM emails
     WHERE id = $1;

    SELECT backend
      INTO v_backend
      FROM backends
     WHERE id = $1;

    RETURN QUERY SELECT v_email AS email,
                        v_backend AS backend;
END;
$$ LANGUAGE 'plpgsql' SECURITY DEFINER;


and then doing selects:
SELECT * FROM get_user_data('${id}') AS (email VARCHAR, backend VARCHAR)


Is it okay, there will be a lot of those queries?




--
regards,
Artis Caune

<----. CCNA
<----|====================
<----' didii FreeBSD

pgsql-general by date:

Previous
From: "Markova, Nina"
Date:
Subject: Re: FW: How to upload data to postgres
Next
From: Alvaro Herrera
Date:
Subject: Re: Autocommit, isolation level, and vacuum behavior