Re: plpgsql and arrays

Поиск
Список
Период
Сортировка
От Richard Huxton
Тема Re: plpgsql and arrays
Дата
Msg-id 45A75E14.8080403@archonet.com
обсуждение исходный текст
Ответ на plpgsql and arrays  (Artis Caune <Artis.Caune@latnet.lv>)
Ответы Re: plpgsql and arrays  (Artis Caune <Artis.Caune@latnet.lv>)
Список pgsql-general
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"
Дата:
Сообщение: Re: [HACKERS] Checkpoint request failed on version 8.2.1.
Следующее
От: "Gellert, Andre"
Дата:
Сообщение: Need setup help for Postgresql 8.1.3 on Solaris 10