0

関数内に 2 次元配列を作成し、select ステートメントの値を入力したいと思います。このコードを試してみると、1 次元配列になってしまいます。私は何を間違っていますか?

select array(select a from t a)
=====================================
"{"(1,stxt,varchar)","(2,sint,int)"}"


create or replace function __test(
) returns text
language 'plpgsql' as
$$
declare
  _dat varchar[][];

begin

  _dat = (select array(select a from t a));

  return array_dims(_dat);

end;
$$;


select __test();
===========
"[1:2]"

最後のコマンドが [1:2][1:3] を 2 行 3 列で返すと予想していました。

4

1 に答える 1

1

PostgreSQL は 1 つのタイプの配列のみをサポートします。そのため、行の配列のみを取得できます。2D 配列を取得することはできません。それをうまくやる方法は今のところありません。

于 2012-05-07T14:19:25.097 に答える