Re: INSERT with RETURNING clause inside SQL function

From: "Diego Schulz" <dschulz(at)gmail(dot)com>
To: lennin(dot)caro(at)yahoo(dot)com
Cc: pgsql-general(at)postgresql(dot)org
Subject: Re: INSERT with RETURNING clause inside SQL function
Date: 2008-11-04 14:53:41
Message-ID: 47dcfe400811040653v41a4d165q68c094778ff92b53@mail.gmail.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-general

On Tue, Nov 4, 2008 at 9:57 AM, Lennin Caro <lennin(dot)caro(at)yahoo(dot)com> wrote:
>> Hi all,
>>
>> I'm re-writing some functions and migrating bussines
>> logic from a
>> client application to PostgreSQL.
>>
>> I expected something like this to work, but it doesn't:
>>
>> -- simple table
>> CREATE TABLE sometable (
>> id SERIAL PRIMARY KEY,
>> text1 text,
>> text2 text
>> );
>>
>> CREATE OR REPLACE FUNCTION add_something(text, text)
>> RETURNS INTEGER AS $$
>> INSERT INTO sometable (id, foo, bar ) VALUES (DEFAULT,
>> $1, $2 )
>> RETURNING id ;
>> $$ LANGUAGE SQL ;
>>
>>
>> Please note the use of RETURNING clause. If I put a SELECT
>> 1; after
>> the INSERT, the function works (but doesn't returns any
>> useful value
>> :)
>> I need the function to return the last insert id. And yes,
>> I'm aware
>> that the same can be achieved by selecting the greatest id
>> in the
>> SERIAL secuence, but is not as readable as RETURNING
>> syntax. And no,
>> for me it's not important that RETURNING is not
>> standard SQL.
>>
>> Does anyone knows why RETURNING doesn't works inside
>> SQL functions?
>>
>> Any advise will be very appreciated. TIA.
>>
>> diego
>>
> Hi.. what version of postgres you have?
>
>

I'm using 8.3.3.

In response to

Browse pgsql-general by date

  From Date Subject
Next Message Ivan Sergio Borgonovo 2008-11-04 14:55:07 gin creation and previous history of server
Previous Message Tom Lane 2008-11-04 14:49:37 Re: Installation Error of postgresql-8.1.5 with perl.