Se:http://www.postgresql.org/docs/9.1/static/arrays.html
Om din icke-infödda drivrutin fortfarande inte tillåter dig att skicka arrayer kan du:
-
skicka en strängrepresentation av en array (som din lagrade procedur sedan kan analysera till en array -- se
string_to_array
)CREATE FUNCTION my_method(TEXT) RETURNS VOID AS $$ DECLARE ids INT[]; BEGIN ids = string_to_array($1,','); ... END $$ LANGUAGE plpgsql;
sedan
SELECT my_method(:1)
med :1 =
'1,2,3,4'
-
lita på att Postgres själv castar från en sträng till en array
CREATE FUNCTION my_method(INT[]) RETURNS VOID AS $$ ... END $$ LANGUAGE plpgsql;
sedan
SELECT my_method('{1,2,3,4}')
-
välj att inte använda bindningsvariabler och utfärda en explicit kommandosträng med alla parametrar utskrivna istället (se till att validera eller escape alla parametrar som kommer utifrån för att undvika SQL-injektionsattacker.)
CREATE FUNCTION my_method(INT[]) RETURNS VOID AS $$ ... END $$ LANGUAGE plpgsql;
sedan
SELECT my_method(ARRAY [1,2,3,4])