From: | brian <brian(at)zijn-digital(dot)com> |
---|---|
To: | pgsql-general(at)postgresql(dot)org |
Subject: | Re: shortcut for select * where id in (arrayvar) |
Date: | 2008-03-30 23:14:04 |
Message-ID: | 47F01EBC.6020507@zijn-digital.com |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-general |
Ivan Sergio Borgonovo wrote:
> I'm still investigating on how to return array elements.
>
> I came out with something like:
>
> create or replace function auz(out _errcode int, out _errmsg text)
> returns setof record as $$
> declare
> errcode int[];
> errmsg text[];
> _row record;
> begin
> errcode[1]:=1;
> errmsg[1]:='pota pota';
> errcode[2]:=3;
> errmsg[2]:='bau bau';
> for i IN coalesce(array_lower(errcode,1),0) ..
> coalesce(array_upper(errcode,1),-1)
> loop _errcode:=errcode[i];
> _errmsg:=errmsg[i]; return next;
> end loop;
> return;
> end;
> $$ language plpgsql;
>
> I'd like to avoid to hard code error messages in the function so I
> was thinking about adding a table with error_id, error_messages and
> change the for loop with something similar to
>
> for _row in
> select err, msg from errortable where err in (errcode)
>
> where errcode is an array.
> That syntax doesn't work... is there any alternative syntax to keep
> stuff short and not error prone?
>
How about something like:
select err, msg from errortable
where err in (array_to_string(errcode, ','))
b
From | Date | Subject | |
---|---|---|---|
Next Message | Dragan Zubac | 2008-03-30 23:19:34 | Re: database 1.2G, pg_dump 73M?! |
Previous Message | Joris Dobbelsteen | 2008-03-30 22:44:19 | Re: database 1.2G, pg_dump 73M?! |