Re: Update multiple rows in a table with different values

Поиск
Список
Период
Сортировка
От shankha
Тема Re: Update multiple rows in a table with different values
Дата
Msg-id CAO_L6qGNM5k=-a35ROUA0bxVuLfq9XMNNep=vKk5+XzsEC2GNg@mail.gmail.com
обсуждение исходный текст
Ответ на Re: Update multiple rows in a table with different values  (Tom Lane <tgl@sss.pgh.pa.us>)
Список pgsql-general
Hi Tom,
Thanks for your suggestion.

I got it working:

CREATE OR REPLACE FUNCTION s.updatefunc1(BigInt[], BigInt[])
RETURNS void as $$
BEGIN
    FOR i IN array_lower($1, 1) .. array_upper($1, 1)
    LOOP
        update s.t1
        SET c3 = $2[i]
        WHERE c2 = $1[i];
    END LOOP;
END;
$$
LANGUAGE plpgsql;


Is there a better way to do it using : unnest.

Thanks
Shankha Banerjee


On Fri, Jul 1, 2016 at 10:59 AM, Tom Lane <tgl@sss.pgh.pa.us> wrote:
> shankha <shankhabanerjee@gmail.com> writes:
>> PREPARE updatearrayplan(BigInt[], BigInt[]) AS
>>         for i in size($1)
>>         DO
>>             update s.t1
>>             SET c3 = $2[$i]
>>             WHERE c2 = $1[$i]
>>         END FOR
>
>> In this prepared statement I am just trying to explain the algorithm.
>> I do not know the exact syntax.
>
> You would need to write a plpgsql function in order to have a loop like
> that; there's no loops in bare SQL.
>
>                         regards, tom lane


В списке pgsql-general по дате отправления:

Предыдущее
От: "Sfiligoi, Igor"
Дата:
Сообщение: PSQL does not remove obvious useless joins
Следующее
От: Merlin Moncure
Дата:
Сообщение: Re: PSQL does not remove obvious useless joins