Talk About Network

Google


Register and Login
Nick
Password
Register create new account Sign up is FREE and you can post replies, new topics, bookmark posts and more!
Recover lost password


Data Bases > Pgsql General > Re: Returning R...
Latest [ Topics | Posts ] Archive Post A New Topic Post a Reply
<< Topic < Post Post 3 of 6 Topic 15507 of 17437
Post > Topic >>

Re: Returning RECORD from PGSQL without custom type?

by dante@[EMAIL PROTECTED] ("D. Dante Lorenso") May 12, 2008 at 12:31 PM

Pavel Stehule wrote:
> Hello
> 2008/5/10 D. Dante Lorenso <dante@[EMAIL PROTECTED]
>:
>> Instead of doing this:
>>
>>  CREATE OR REPLACE FUNCTION "my_custom_func" (in_value bigint)
>>  RETURNS SETOF record AS
>>  $body$
>>  ...
>>  $body$
>>  LANGUAGE 'plpgsql' VOLATILE;
>>
>> I'd like to be able to do this:
>>
>>  CREATE OR REPLACE FUNCTION "my_custom_func" (in_value bigint)
>>  RETURNS SETOF (col1name BIGINT, col2name TEXT, ...) AS
>>  $body$
>>  ...
>>  $body$
>>  LANGUAGE 'plpgsql' VOLATILE;
>>
> 
> Standard syntax via ANSI SQL is
> CREATE FUNCTION foo(params)
> RETURNS TABLE(fields of output table) AS
> $$ ...
> $$

Ah, this sound almost exactly like what I'm wanting!  So ... you are 
saying that developers are working on something like?  I'm running 8.3 
.... would I find this feature in 8.4 or is it still not included in any 
release?

>> Because this is the only function that will be returning that TYPE and
I
>> don't want to have to create a separate type definition just for the
return
>> results of this function.
>>
>> Maybe even more cool would be if the OUT record was already defined so
that
>> I could simply select into that record to send our new rows:
>>   RETURN NEXT OUT;
>>   OUT.col1name := 12345;
>>   RETURN NEXT OUT;
>>   SELECT 12345, 'sample'
>>   INTO OUT.col1name, OUT.col2name;
>>   RETURN NEXT OUT;
>
> it's good idea - it was probably main problem of last patch in
> plpgsql. In this syntax is clear what is output, so RETURN NEXT
> statement can be without params. I am only not sure about name of
> default variable - maybe result is better.

Yeah, RESULT works too.  I'm not particular about what it has to be ... 
just that something like that might exist.

Where can I go to follow development of this or test it out?  I see some 
old threads now that I know what to look for:

http://archives.postgresql.org/pgsql-hackers/2007-02/msg00318.php
http://archives.postgresql.org/pgsql-patches/2007-02/msg00216.php
http://archives.postgresql.org/pgsql-patches/2007-02/msg00341.php
http://archives.postgresql.org/pgsql-hackers/2007-09/msg01079.php

I want to make sure this patch/proposal covers my needs and 
expectations.  Specifically I want to return records that are not simple 
a straight query:

   CREATE OR REPLACE FUNCTION foo(f integer)
   RETURNS TABLE(a int, b int) AS
   $$
   DECLARE
     my_a INT;
     my_b INT;
   BEGIN
     -- 1) perhaps like this
     SELECT 1, 2
     INTO RESULT.a, RESULT.b;
     RETURN NEXT RESULT;

     -- 2) maybe like this
     RETURN NEXT 3, 4;  -- a=3, b=4

     -- 3) how about like this
     my_a := 5;
     my_b := 6;
     RETURN NEXT my_a, my_b;

     -- 4) maybe like this
     RETURN NEXT QUERY SELECT a, b FROM sometable x WHERE x.f = f;

     -- done
     RETURN;
   END;
   $$ LANGUAGE plpgsql;

Usage:

   SELECT a, b
   FROM foo(20);

Results:

   a  |  b
   ---+----
    1 |  2   <-- 1)
    3 |  4   <-- 2)
    5 |  6   <-- 3)
   ...       <-- 4) results from sometable WHERE x.f = 20

What do you think, will I be able to do all of this?

-- Dante

> Regards
> Pavel Stehule
> 
>> Just as you've allowed me to define the IN variable names without
needing
>> the legacy 'ALIAS $1 ...' format, I'd like to name the returned record
>> column names and types in a simple declaration like I show above.
>>
>> Does this feature request make sense to everyone?  It would make
programming
>> set returning record functions a lot easier.
>>
>> -- Dante
>>
>>
>> --
>> Sent via pgsql-general mailing list (pgsql-general@[EMAIL PROTECTED]
)
>> To make changes to your subscription:
>> http://www.postgresql.org/mailpref/pgsql-general
>>
> 


-- 
Sent via pgsql-general mailing list (pgsql-general@[EMAIL PROTECTED]
)
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgsql-general
 




 6 Posts in Topic:
Returning RECORD from PGSQL without custom type?
dante@[EMAIL PROTECTED]   2008-05-10 00:41:20 
Re: Returning RECORD from PGSQL without custom type?
pavel.stehule@[EMAIL PROT  2008-05-12 11:12:07 
Re: Returning RECORD from PGSQL without custom type?
dante@[EMAIL PROTECTED]   2008-05-12 12:31:02 
Re: Returning RECORD from PGSQL without custom type?
tgl@[EMAIL PROTECTED] (T  2008-05-12 13:58:55 
Re: Returning RECORD from PGSQL without custom type?
dante@[EMAIL PROTECTED]   2008-05-12 14:23:29 
Re: Returning RECORD from PGSQL without custom type?
pavel.stehule@[EMAIL PROT  2008-05-12 20:47:11 

Post A Reply:
  Go here to Signup

AddThis Feed Button


About - Advertising - Contact - Frequently Asked Questions - Privacy Policy - Terms of Use - Signup

Contact
tan12V112 Sat Nov 22 12:40:48 CST 2008.