Re: plpgsql and arrays
От
Richard Huxton
Тема
Re: plpgsql and arrays
Дата
Msg-id
45A75E14.8080403@archonet.com
Ответ на
plpgsql and arrays (Artis Caune)
Список
Дерево обсуждения
plpgsql and arrays Artis Caune <Artis.Caune@latnet.lv>
Re: plpgsql and arrays Richard Huxton <dev@archonet.com>
Re: plpgsql and arrays Artis Caune <Artis.Caune@latnet.lv>
Re: plpgsql and arrays Richard Huxton <dev@archonet.com>
Artis Caune wrote:
> I'm trying to write function which accept array and insert each element
> in table:
>
> =# SELECT * FROM add_user('{user1@domain, user2@domain}');
> ERROR: column "email" is of type character varying but expression is
> of type record
> HINT: You will need to rewrite or cast the expression.
> function is like this:
> FOR v_rec IN SELECT $1[i] FROM generate_series(array_lower($1,1),
> array_upper($1,1)) s(i)
...
> INSERT INTO users2 VALUES ((SELECT currval('users2_uid_seq')),
> v_rec);
Well, v_rec is a RECORD, just like the error says. You want the first
attribute. Try this:
FOR v_rec IN SELECT $1[i] AS username FROM ...
INSERT INTO users2 VALUES (..., v_rec.username)
However, I'd also just have a normal loop counting over the array
upper/lower bounds. Then you could just use:
INSERT INTO users2 VALUES (..., $1[i])
HTH
--
Richard Huxton
Archonet Ltd
В списке pgsql-general по дате отправления
От: Zeugswetter Andreas ADI SD
Дата: