pg.ddx.io  pgsql-sql@postgresql.org mailing list archive  
help / color / mirror / Atom feed
From: Jordan S. Jones <list@racistnames.com>
To: Franco Bruno Borghesi <franco@akyasociados.com.ar>
To: pgsql-sql@postgresql.org
Subject: Re: returning composite types.
Date: Fri, 28 Mar 2003 17:32:03 -0700
Message-ID: <3E84E983.10206@racistnames.com> (raw)
In-Reply-To: <200303282020.25997.franco@akyasociados.com.ar>
References: <200303282020.25997.franco@akyasociados.com.ar>

Here is how I have been doing mine:

    CREATE FUNCTION "myFunction" () RETURNS SETOF mytype
    AS
    '
    DECLARE
        r      mytype%ROWTYPE;
    BEGIN
        FOR r IN [SELECT STATEMENT]
        LOOP
           RETURN NEXT r;
        END LOOP;
        RETURN;
    END;
    '
    LANGUAGE 'plpgsql';

Hope this Helps..

Jordan S. Jones


Franco Bruno Borghesi wrote:

>Hi guys.
>
>I'm working with functions in my database, using plpgsql, but I reached a 
>point where I realize I'm missing a concept: how do I return composite types 
>from a function? I'll give you an example:
>
>CREATE TYPE mytype AS(
>   val1 INTEGER,
>   val2 INTEGER,
>   val3 INTEGER,
>   val4 INTEGER   
>);
>
>If I want my function to return a "mytype" type, should I declare it as:
>CREATE FUNCTION myFunction() RETURNS mytype AS ...
>or maybe
>CREATE FUNCTION myFunction() RETURNS SETOF mytype AS ...
>
>and in any case, inside the function, how should I declare the variable 
>holding the return value?:
>
>DECLARE
>   result mytype;
>BEGIN
>...
>   RETURN result;   
>END;   
>
>or maybe      
>
>DECLARE
>   result mytype%ROWTYPE;
>BEGIN
>...
>   RETURN result;   
>END;   
>
>I've read the documentation and the examples in it, but I still don't 
>understand what the right way is. If you could give an example of a function 
>filling "mytipe" and returning it, it would really help me.
>
>Thanks in advance.
>   
>

view thread (7+ messages)  latest in thread

Message-ID: <3E84E983.10206@racistnames.com>
Permalink:  ../3E84E983.10206@racistnames.com/
Also on:    postgresql.org/message-id/3E84E983.10206@racistnames.com

 · 

reply

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Reply to all the recipients using the --to and --cc options:
  reply via email

  To: pgsql-sql@postgresql.org
  Cc: list@racistnames.com, franco@akyasociados.com.ar
  Subject: Re: returning composite types.
  In-Reply-To: <3E84E983.10206@racistnames.com>

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

This inbox is served by DDX for PostgreSQL; see mirroring instructions
for how to clone and mirror all data and code used for this inbox