次の1次元のARRAYデータ型およびテーブルについて考えてみましょう。
CREATE TYPE phonenumbers AS VARRAY(20) OF CHAR(10); CREATE TABLE employee_info (eno INTEGER, phonelist phonenumbers);
テーブルには次の値が取り込まれます。
/* The first 2 elements are populated; the rest are uninitialized. */
INSERT INTO employee_info VALUES (1,
phonenumbers('1112223333', '6195551234'));
/* Empty ARRAY instance */
INSERT INTO employee_info VALUES (2,
phonenumbers());
/* Update empty ARRAY instance such that element 3 is set to a value;
Then elements 1 and 2 are set to NULL, the rest are uninitialized */
UPDATE employee_info
SET phonelist[3] = '8584850000'
WHERE id = 2;
次の問合わせは、単一のNULL構成要素でphonelist配列を拡張します。
SELECT eno, phonelist.OEXTEND() FROM employee_info;
問合わせの結果を次に示します。
ENO phonelist.OEXTEND()
--- -------------------
1 ('1112223333', '6195551234',NULL)
2 (NULL,NULL,'8584850000',NULL)
次の問合わせは、3つのNULL構成要素でphonelist配列を拡張します。
SELECT eno, phonelist.OEXTEND(3) FROM employee_info;
問合わせの結果を次に示します。
ENO phonelist.OEXTEND(3)
--- --------------------
1 ('1112223333', '6195551234',NULL,NULL,NULL)
2 (NULL,NULL,'8584850000',NULL,NULL,NULL)
次の問合わせは、構成要素1を2つコピーして、phonelist配列を拡張します。
SELECT eno, phonelist.OEXTEND(2,1) FROM employee_info WHERE eno = 1;
問合わせの結果を次に示します。
ENO phonelist.OEXTEND(2,1)
--- ----------------------
1 ('1112223333', '6195551234', '1112223333', '1112223333')
次は、関数スタイルの構文を使用した同じ問合わせです。
SELECT eno, OEXTEND(phonelist,2,1) FROM employee_info WHERE eno = 1;