Search Postgresql Archives

Re: Function returning subset of columns from table (return type)

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Myk wrote:
Hi

I'm pretty new to PostgreSQL, and have encountered a bit of trouble
with functions, namely the return type. Version is 8.0.15.

I have the following table:

note ( id int, added date, updated date, text varchar(1000) )

and want to define a function that just returns the dates and text by
id. I initially just did:

create function note_get (id int) returns setof note as 'select *
from note where id=$1' language sql;

which was fine. Then later I thought I'd try formatting the columns
(they're only intended for display):

create function note_get ( id int ) returns setof record as ' select to_char (added, ''Mon D YYYY''), to_char (updated, ''Mon D YYYY''), text from note where id=$1 ' language sql;

but this gives me ERROR:  a column definition list is required for
functions returning "record"


You could create a rowtype for this:

CREATE TYPE your_type
AS (
  added CHAR(11) NOT NULL,
  updated CHAR(11) NOT NULL,
  text_col TEXT
);

CREATE FUNCTION get_note(id INT)
RETURNS SETOF your_type IMMUTABLE
AS $$

  DECLARE
    your_row your_type%rowtype;

  BEGIN
    SELECT INTO your_row
      to_char(added, 'Mon D YYYY'),
      to_char(updated, 'Mon D YYYY'),
      text_col
    FROM note
    WHERE id = $1;

    RETURN your_row;
  END;
$$ LANGUAGE sql;

b

---------------------------(end of broadcast)---------------------------
TIP 9: In versions below 8.0, the planner will ignore your desire to
      choose an index scan if your joining column's datatypes do not
      match

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Index of Archives]     [Postgresql Jobs]     [Postgresql Admin]     [Postgresql Performance]     [Linux Clusters]     [PHP Home]     [PHP on Windows]     [Kernel Newbies]     [PHP Classes]     [PHP Books]     [PHP Databases]     [Postgresql & PHP]     [Yosemite]
  Powered by Linux