у меня есть некоторая функциональность, которую я хотел бы получить из серверного кода в базу данных.
я не могу выяснить, как установить значения multi-demensional 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;`
ни за что в жизни я не могу выяснить, как заставить это работать.
любая справка была бы большой. я использую пост-ГРЭС 8.1 между прочим (упорно продолжил ту версию).
Попробуйте вот так, протестировал без проблем.
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;