Re: shortcut for select * where id in (arrayvar)
От | brian |
---|---|
Тема | Re: shortcut for select * where id in (arrayvar) |
Дата | |
Msg-id | 47F01EBC.6020507@zijn-digital.com обсуждение исходный текст |
Ответ на | shortcut for select * where id in (arrayvar) (Ivan Sergio Borgonovo <mail@webthatworks.it>) |
Список | 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
В списке pgsql-general по дате отправления: