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