создание многомерных массивов varchar / text в plpgsql (postgres) - PullRequest
1 голос
/ 06 августа 2010

У меня есть некоторые функции, которые я хотел бы получить из серверного кода в базу данных.

Я не могу понять, как установить значения многомерного массива varchar в plpgsql.

вот пример того, что я пытаюсь сделать:

`CREATE OR REPLACE FUNCTION my_function (my_arg integer) RETURNS text[][] AS  
$$   
DECLARE  
   my_arr varchar[][];  
   r_row RECORD;  
   counter integer:= 1;  
BEGIN  
   FOR r_row IN SELECT my_stuff1, my_stuff2 FROM my_table WHERE my_val = my_arg LOOP  
       my_arr[counter][1] := r_row.my_stuff1;
       my_arr[counter][2] := r_row.my_stuff2;
       my_arr[counter][3] := 'my_string';
   END LOOP;  
   return my_arr;
END;  
$$
LANGUAGE plpgsql;`

ради жизни я не могу понять, как заставить это работать.

любая помощь будет отличной. Кстати, я использую Postgres 8.1 (застрял на этой версии).

1 Ответ

2 голосов
/ 07 августа 2010

Попробуйте вот так, я проверил это без проблем.

CREATE OR REPLACE FUNCTION my_function (my_arg integer) RETURNS text[][] AS
$$
DECLARE
   my_arr varchar[][];
   r_row RECORD;
   counter integer:= 1;
BEGIN
   FOR r_row IN SELECT my_stuff1, my_stuff2 FROM my_table WHERE my_val = my_arg LOOP
       my_arr[counter] := array[r_row.my_stuff1,r_row.my_stuff2,'my_string'];
       counter :=counter+1;
   END LOOP;
   return my_arr;
END;
$$
LANGUAGE plpgsql;
...