[pgsql-jp: 30417] Re: PL/pgSQLの引数を32 より増やす方法
Jun Kitamura
kitamura @ zoozee.jp
2003年 7月 8日 (火) 23:42:43 JST
北村です。
> PL/pgSQLの引数を32より増やす方法を探しています。
> とりあえず次のようにやればできるのですが、
(略)
> #define INDEX_MAX_KEYS 512
> #define FUNC_MAX_ARGS INDEX_MAX_KEYS
>
> にしてから、configure & make
>
> 川島の環境では、#define INDEX_MAX_KEYS 1024 にすると
> initdbがfailして、めげました。
引数を増やす方法では無いのですが、PostgreSQL はテーブルをク
ラス、つまり型として扱えます。
例えば(PostgreSQL 7.2.4 で実行)、
create table t1(a int4, b int4, c int4);
insert into t1(a,b,c) values (1,2,3);
insert into t1(a,b,c) values (10,20,30);
create or replace function ftest(t1) returns int4 as '
DECLARE
tbl ALIAS FOR $1;
ret int4;
BEGIN
RETURN (tbl.a + tbl.b + tbl.c);
END;
' language 'plpgsql';
select ftest(tt) from t1 tt;
ftest
-------
6
60
(2 rows)
select ftest(tt) from t1 tt where tt.a = 1;
ftest
-------
6
(1 row)
と、3つの引数を 1つにまとめることが可能です。
他にもいろんなパターンがあり、テーブルの型となるような結果を
期待する SELECT 文 を使えば、「たぶん」引数の制限を変更する
ことなく、実装できるかと思います。
ソースのハッキングなどをしていて、「改造」するのが目的である
ならば、無視してくださいw。
でわでわ。
pgsql-jp メーリングリストの案内