2010-08-06 7 views
1

J'ai quelques fonctionnalités que je voudrais obtenir du code côté serveur dans la base de données.créer des tableaux varchar/text multidimensionnels dans plpgsql (postgres)

Je n'arrive pas à comprendre comment définir les valeurs d'une matrice varchar multidimensionnelle dans PLPGSQL.

est ici un exemple de ce que je suis en train de faire:

`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;` 

pour la vie de moi, je ne peux pas comprendre comment obtenir ce travail.

toute aide serait géniale. J'utilise postgres 8.1 en passant (bloqué à cette version).

+0

À quoi devrait ressembler votre tableau? Quel genre de résultat recherchez-vous? –

Répondre

2

Essayez comme ceci, je l'ai testé sans aucun problème.

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; 
Questions connexes