Voir :http://www.postgresql.org/docs/9.1/static/arrays.html
Si votre pilote non natif ne vous permet toujours pas de transmettre des tableaux, vous pouvez :
-
passer une représentation sous forme de chaîne d'un tableau (que votre procédure stockée peut ensuite analyser dans un tableau -- voir
string_to_array
)CREATE FUNCTION my_method(TEXT) RETURNS VOID AS $$ DECLARE ids INT[]; BEGIN ids = string_to_array($1,','); ... END $$ LANGUAGE plpgsql;
alors
SELECT my_method(:1)
avec :1 =
'1,2,3,4'
-
s'appuyer sur Postgres lui-même pour passer d'une chaîne à un tableau
CREATE FUNCTION my_method(INT[]) RETURNS VOID AS $$ ... END $$ LANGUAGE plpgsql;
alors
SELECT my_method('{1,2,3,4}')
-
choisissez de ne pas utiliser de variables liées et émettez une chaîne de commande explicite avec tous les paramètres épelés à la place (assurez-vous de valider ou d'échapper tous les paramètres provenant de l'extérieur pour éviter les attaques par injection SQL.)
CREATE FUNCTION my_method(INT[]) RETURNS VOID AS $$ ... END $$ LANGUAGE plpgsql;
alors
SELECT my_method(ARRAY [1,2,3,4])