参照:http://www.postgresql.org/docs/9.1/static/arrays.html
それでも非ネイティブドライバで配列を渡すことができない場合は、次のことができます。
-
配列の文字列表現を渡します(ストアドプロシージャはこれを配列に解析できます。
string_to_array
を参照してください。 )CREATE FUNCTION my_method(TEXT) RETURNS VOID AS $$ DECLARE ids INT[]; BEGIN ids = string_to_array($1,','); ... END $$ LANGUAGE plpgsql;
次に
SELECT my_method(:1)
:1 =
'1,2,3,4'
-
文字列から配列へのキャストはPostgres自体に依存しています
CREATE FUNCTION my_method(INT[]) RETURNS VOID AS $$ ... END $$ LANGUAGE plpgsql;
次に
SELECT my_method('{1,2,3,4}')
-
バインド変数を使用せず、代わりにすべてのパラメーターをスペルアウトした明示的なコマンド文字列を発行することを選択します(SQLインジェクション攻撃を回避するために、外部からのすべてのパラメーターを検証またはエスケープしてください)。
CREATE FUNCTION my_method(INT[]) RETURNS VOID AS $$ ... END $$ LANGUAGE plpgsql;
次に
SELECT my_method(ARRAY [1,2,3,4])