テーブルの列を可変長多次元配列として定義できます。あらゆる組込み型やユーザ定義型の配列も作成可能です。(とは言っても複合型もしくはドメインの配列はまだサポートされていません。実際の配列の使いかたを説明するために、次のテーブルを作成します。text[][]);見てお解りのように配列データ型は配列要素のデータ型の名前に大括弧([])をつけて指定します。いう名前のテーブルを作成します。構文で指定する配列の正確な大きさを決めることができます。integer[3][3]);とは言っても現在の実装では配列の大きさの制限を強要しません。長さの指定がない配列とおなじ振舞をします。実際のところ現在の実装では次元数の宣言も強制していません。特定の要素型の配列はすべて大きさあるいは次元数とは無関係に同じ型と見なされます。次元数や大きさを宣言することは単なるコメントで、実行時の動作に影響を及ぼすものではありません。標準に準拠したもう一つの構文を一次元配列に使う事ができます。次のように定義することもできます。ARRAY[4],この構文は配列の大きさを示す整数による定数が必要です。は大きさの制限を強要しません。配列の値の入力リテラル定数として配列の値を書き込むにはその要素の値を中括弧で囲みそれぞれの要素の値をコンマで区切ります。言語を知っているならば、構造体を初期化するための構文のようなものと考えてください。)要素の値を二重引用符で囲うこともでき、コンマもしくは中括弧がある時は必ずそのように書かなければなりません。(詳細は以下にでてきます。)したがって配列定数の一般的書式は次のようになります。エントリに記録されている型の区切り文字です。型はセミコロン(;)を使用しますが、残り全てはコンマ(,)を使います。配列要素の型の定数か副配列です。配列定数の例を以下に示します。説明されている一般型定数の特別の場合にすぎません。この定数はもともと文字列として扱われていて配列入力ルーチンに渡されました。明示的な型の仕様が必要かもしれません。文をいくつか紹介します。dimensions多次元配列はそれぞれの次元に対応する範囲指定が必要なことを覚えておいてください。値となれないことです。ないという配列を持つことができません。(これは将来変更予定です。つの挿入文の結果は次のようになります。生成子構文も使えます。定数もしくは演算式であることに注意してください。文字列リテラルは配列リテラルにおけると同様二重引用符ではなく単一引用符で括られます。より詳しく説明があります。配列へのアクセスではテーブルに対していくつかの問い合わせを行ってみましょう。回にある配列の単一要素にアクセスする方法を示します。四半期に給与が更新された従業員の名前を抽出します。row)配列の添字番号は大括弧で囲んで書かれます。始まり」の振り番規定を採用しています。四半期の給与を抽出します。rows)また、配列や副配列の任意の縦方向の部分を切りだすこともできます。最初何が予定されているかを抽出します。row)次のように書くこともできます。'Bill';同じ結果が得られます。いう形式で書かれていると、配列の一部を表していると想定します。row)現在の配列境界の外から取り出しても、エラーにならず、SQLのNULL値が生成されます。[1:3][1:2]であった場合、schedule[3][3]を参照するとNULLになります。同様に、間違った番号の添え字で配列を参照した場合もエラーにならず、NULLになります。現在の配列境界のまったく外側の部分配列を取り出した場合も同様にNULLの配列になります。要求した部分配列が部分的に配列境界に重なる場合、警告無く重なった領域のみに減らされます。関数で任意の配列値の現在の次元を取り出せます。人間が結果を見るためには便利ですが、プログラムにとってはあまり都合がよいとは言えないかもしれません。抽出することができ、それぞれ特定の配列の次元の上限と下限を返します。配列の値をすべて置き換えることができます。演算構文を用いて次のように書きます。つの要素を更新することも可能です。'Bill';あるいは一部分の更新も可能です。'Carol';保存されている配列の値は既にある配列要素の直後に要素を割り当てるか、すでにあるデータの後もしくは上書きするかたちで一部分を指定することにより拡張することができます。現在では、このような配列の拡張は一次元配列でのみ可能となっていて、多次元配列ではできません。始まり以外の添字がある配列を作れます。用いて作成することもできます。row)連結演算子を使うと一次元配列の最初もしくは最後に一つの要素を押し込むことができます。N+1-次元配列にも対応しています。差し引いた数に等しい下限添字を持った配列となります。つの要素が一次元配列の最後に押し込まれた場合、結果は左側演算項目の下限を引き継いだ配列となります。row)等しい次元を持った二つの配列が連結された場合、結果は左側演算項目の外側の次元の下限添字を引き継ぎます。結果は右側被演算子のすべての要素に左側被演算子が続いた配列となります。N+1-次元配列の最初または最後に押し込まれると結果は上記と似通った要素配列になります。N+1-次元配列の外側の次元の要素となります。使って構築することもできます。多次元配列でも使えます。ここで説明した結合演算子はそれぞれの関数を直接叩くのが望ましいことを覚えておいてください。事実それらの関数の主な目的は連結演算子の実装に使用することです。言ってもユーザ定義の集約関数を作る時そのまま使えます。配列内のある値を検索するには配列のそれぞれの値を検証しなければなりません。配列の大きさがわかっているならば手作業でも検索できます。10000;とは言ってもこの方法では大きい配列では大変な作業となりますし、配列の大きさが不明な場合この方法は使えません。上の問い合わせは以下のように書くことができます。等しいものを見つけることもできます。配列は集合ではありません。特定の配列要素に検索をかけることは多分にデータベース設計が誤っている可能性を示唆しています。配列の要素と見なされるそれぞれの項目を行に持つ別のテーブルを使うことを検討してください。このほうが検索がより簡単になり要素数が大きくなっても拡張性があります。変換ルールに基づいて翻訳された項目と配列の構造を示す装飾項目で構成されています。})で囲んだものとつぎの項目との間を区切り文字で区切ったものです。区切り文字は通常コンマ(,)ですがほかの文字でもかまいません。設定することで決まります。型はセミコロン(;)を使いますがそのほかすべてはコンマを使っています。)多次元配列ではそれぞれの次元(列、面、立体など)はそれ自身の階層において中括弧、同じ階層の中括弧で括られたつぎの塊との間に区切り文字が書かれていなくてはいけません。バックスラッシュあるいは空白が含まれていると要素の値は配列出力処理で二重引用符で括られます。要素の値に組み込まれている二重引用符とバックスラッシュはバックスラッシュでエスケープされます。数値データ型に対しては二重引用符が出現しないと想定するのが安全ですが、テキストデータ型の場合引用がある場合とない場合に対処できるようにしておくべきです。以前からの振舞の変更です。等しくない下限インデックスを配列が所有している場合実際の配列次元を示す追加の修飾項目が配列構造の修飾項目に先行します。修飾項目はそれぞれの配列次元の上限と下限をコロン(:)で区切って前後を大括弧([])で括った形式になっています。代入演算子(=)の後に配列次元修飾項目が続きます。row)この構文は配列リテラルでデフォルト以外の配列の添え字を指定する時にも使用されます。row)前に示したように配列に値を書き込む場合は独立した配列要素を二重引用符で括ります。配列値パーザが配列要素値によって混乱を来さないように必ずこの形式を守ってください。中括弧、コンマ(もしくはどんな区切り文字)、二重引用符、逆スラッシュもしくは前後についた空白を含む要素は必ず二重引用符で括らなければなりません。二重引用符もしくは逆スラッシュを引用符付きの配列要素に付け加えたい場合はその直前に逆スラッシュを付けます。別の方法として配列構文と見做されるような全てのデータ文字を逆スラッシュでエスケープしても構いません。括弧の右側もしくは左側それぞれの前と後に空白があっても構いません。同様独立した項目の文字列の前後に空白があっても構いません。これら全ての場合において空白は無視されます。言っても二重引用符で囲まれた要素の中の空白、もしくは要素の空白文字以外により両側が括られているものは無視されません。命令文でかかれたものは最初に文字列リテラルとして解釈されその次に配列として解釈される事を覚えておいてください。言うことは逆スラッシュの数が倍になることを意味します。配列値を挿入する場合次のようになります。