Re: How to pass array of values to a pgplsql function

Поиск
Список
Период
Сортировка
От Erik Jones
Тема Re: How to pass array of values to a pgplsql function
Дата
Msg-id 44BD2A1A.30705@myemma.com
обсуждение исходный текст
Ответ на Re: How to pass array of values to a pgplsql function  (Erik Jones <erik@myemma.com>)
Список pgsql-general
Erik Jones wrote:
> Curtis Scheer wrote:
>> Does anyone have any examples of how I would make a stored procedure in
>> plpgsql that would allow for passing a list or arrays of values to be
>> used
>> in an sql IN clause?  Like so: select * from table where field1 in
>> (values).
>> Is this possible?
>>
> Well, a good thing to note here is that there is a very distinct
> semantic difference between an array in postgres and what IN clauses
> take as input:  and array
> is a data type whereas IN clauses take a parenthesized list of comma
> separated values.  So, if you  pass an array into a function wherein
> you then need
> to use those values in an IN clause, you can build yourself an string
> of the values in the array, comma separated of course.
>
> e.g.
>
> CREATE OR REPLACE FUNCTION somefunc(ids int[]) RETURNS boolean AS $sf$
> DECLARE
>    in_values varchar;
>    good int;
> BEGIN
>    FOR i IN array_upper(ids, 1) LOOP
>       in_values := in_values || ids[i] || ',';
>    END LOOP;
>    in_values := substring(in_values FROM 1 FOR
> character_length(in_values) - 1); -- this will chop off the last comma
>
>    EXECUTE 'SELECT 1 FROM blah WHERE blah.id IN (' || in_values ||');'
> INTO good;
>    IF(good = 1) THEN
>       RETURN TRUE;
>    ELSE
>        RETURN FALSE;
>    END IF;
> END;
> $sf$ LANGUAGE plpgsql;
>
> Or, it may be easier given whatever your situation to simply use the
> array as the argument to a row-wise AND or SOME expression.
>
Whoa, replied to this out of the General mailing list before I saw the
other answers on the SQL list...  Sorry guys

--
erik jones <erik@myemma.com>
software development
emma(r)


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

Предыдущее
От: Erik Jones
Дата:
Сообщение: Re: How to pass array of values to a pgplsql function
Следующее
От: Curtis Scheer
Дата:
Сообщение: Re: How to pass array of values to a pgplsql function