pg.ddx.io  pgsql-sql@postgresql.org mailing list archive  
help / color / mirror / Atom feed
From: imad <immaad@gmail.com>
To: robins@pobox.com
Cc: Gábriel Ákos <akos.gabriel@i-logic.hu>
Cc: pgsql-sql@postgresql.org
Subject: Re: PL/PGSQL Record type question
Date: Fri, 11 May 2007 23:19:52 +0500
Message-ID: <1f30b80c0705111119v7b0520ebgbda9ae7e07259bc5@mail.gmail.com> (raw)
In-Reply-To: <36af4bed0705111039r561f1c3bod9183535ed86763@mail.gmail.com>
References: <20070511160037.1c09160e@gabriel-laptop>
	<36af4bed0705111039r561f1c3bod9183535ed86763@mail.gmail.com>

On 5/11/07, Robins <tharakan@gmail.com> wrote:
> Hi Gabriel,
>
> There are two ways to do this:
> 1. Imad's way (Define the function with the return type as RECORD). Its only
> problem is that while querying from this function, you need to give a proper
> SELECT query or else PG returns an error.

Yeah ... valid point.

>
> e.g.  As Imad gives in his example ...
>
> CREATE FUNCTION xyz() RETURNS record AS
> $$
>  declare
>   abc RECORD;
>  begin
>   abc := (1, 2);
>   return abc;
>  end;
>  $$
> language plpgsql;
>
> And execute the function in this fashion:
>
> select a, b from xyz() as (a int, b int);
>
> The only problem with this is that if you have 6 elements your select
> statement becomes quite long. Also, in case your function return parameter
> count changes, or its types change, you would need to change the SELECT SQL
> at all the places.
>
> 2. Define a TYPE as John mentioned, and set the function's return type as
> this TYPE. The advantage is that you can always redefine the function and
> the type in case the return parameters are changing and that your select
> statement is a simple SELECT * from fn().

The drawback is that you need to know the complete definition in
advance. In contrast, you can assign any type of row to a RECORD
variable ... much more flexible.


--Imad
www.EnterpriseDB.com



view thread (7+ messages)

Message-ID: <1f30b80c0705111119v7b0520ebgbda9ae7e07259bc5@mail.gmail.com>
Permalink:  ../1f30b80c0705111119v7b0520ebgbda9ae7e07259bc5@mail.gmail.com/
Also on:    postgresql.org/message-id/1f30b80c0705111119v7b0520ebgbda9ae7e07259bc5@mail.gmail.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: immaad@gmail.com, robins@pobox.com, akos.gabriel@i-logic.hu
  Subject: Re: PL/PGSQL Record type question
  In-Reply-To: <1f30b80c0705111119v7b0520ebgbda9ae7e07259bc5@mail.gmail.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