Re: Dereferencing a 2-dimensional array in plpgsql

Поиск
Список
Период
Сортировка
От Sven Willenberger
Тема Re: Dereferencing a 2-dimensional array in plpgsql
Дата
Msg-id 41FE96F6.2010203@dmv.com
обсуждение исходный текст
Ответ на Re: Dereferencing a 2-dimensional array in plpgsql  (Tom Lane <tgl@sss.pgh.pa.us>)
Ответы Re: Dereferencing a 2-dimensional array in plpgsql  (Tom Lane <tgl@sss.pgh.pa.us>)
Список pgsql-general

Tom Lane wrote:
> Sven Willenberger <sven@dmv.com> writes:
>
>>The problem stems from being unable to assign values to an array without
>>first initializing the array in plpgsql.
>
>
> I think we changed this in 8.0.  Before 8.0, trying to assign to an
> element of a NULL array yielded a NULL result array, but I think now
> we let you produce a one-element array that way.
>
>
Using a 8.0 testbox I find that the arrays still need to be initialized:

DECLARE
    blah varchar[];
    foo varchar;
BEGIN
    blah = ''{}'';
    blah[1] := ''bar'';
    foo := blah[1];
    RAISE NOTICE ''blah[1] = %'',foo;
    RETURN NULL;
END;

Will raise notice containing "bar".

DECLARE
    blah varchar[];
    foo varchar;
BEGIN
    blah[1] := ''sven'';
    foo := blah[1];
    RAISE NOTICE ''blah[1] = %'',foo;
    RETURN NULL;
END;

Will raise notice containing <null>.

Leaving the subscript off will initialize the variable with empty braces
or values within the braces; failure to have them results in "array
value must start with "{" or dimension information". Also, this only
applies to single-dimension arrays; I cannot find how to initialize
2-dimension arrays. As as a result, the only way I have seen to do this
then is to create 2 arrays, and having one array point to each row, one
by one, of the large master array. Keep in mind this is all in plpgsql.

Sven


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

Предыдущее
От: Együd Csaba
Дата:
Сообщение: Re: Howto determin the number of elemnts of an array
Следующее
От: dale
Дата:
Сообщение: table name restiction