以下の例は、*.ALL演算子のUDTおよびテーブル定義です。
CREATE TYPE school_record AS ( school_name VARCHAR(20), GPA FLOAT) INSTANTIABLE … CREATE TYPE college_record AS ( school school_record, major VARCHAR(20), minor VARCHAR(20)) INSTANTIABLE … CREATE TABLE student_record ( student_id INTEGER, Last_name VARCHAR(20), First_name VARCHAR(20), high_school school_record, college college_record);
例1a:*.ALLを使用してすべてのテーブル列を検索し、STRUCTURED型を展開する
ここでは、同等の応答セットを返すSELECT文のペアの例を示します。唯一の相違点は、一方の文は*.ALL表記を使用し、他方は使用しないということです。
*.ALLを使用してテーブルstudent_recordのすべての列を検索します。ここではSTRUCTURED型列high_schoolおよびcollegeが展開されます。
SELECT *.ALL FROM student_record;
以下の同等なSELECT文では、*.ALL表記を使用していません。
SELECT student_id, last_name, first_name, high_school.school_name(), high_school.GPA(), college.school().school_name(), college.school().GPA(), college.major(), college.minor() FROM student_record;
例1b:*.ALLを使用して、単一UDT列用の拡張STRUCTURED型を取得する
*.ALLを使用してテーブルstudent_recordのすべての列を検索します。ここではSTRUCTURED型列high_schoolおよびcollegeが展開されます。
SELECT student_record.*.ALL;
以下の同等なSELECT文では、*.ALL表記を使用していません。
SELECT student_record.student_id, student_record.last_name, student_record.first_name, student_record.high_school.school_name(), student_record.high_school.GPA(), student_record.college.school().school_name(), student_record.college.school().GPA(), student_record.college.major(), student_record.college.minor();
例1c: *.ALLを使用して、複数のUDT列用の拡張STRUCTURED型を取得する
高校名と、すべての生徒のGPA(成績評価点平均)を抽出します。
SELECT high_school.ALL FROM student_record;
以下の同等なSELECT文では、.ALL表記を使用していません。
SELECT high_school.school_name(), high_school.GPA() FROM student_record;
例1d:UDTから1生徒のみについての情報を選択する
生徒「Steven Smith」の大学名、GPA(成績評価点平均)、専攻、および副専攻を抽出します。
SELECT s.college.ALL FROM student_record s WHERE s.student.First_name() = 'Steven' AND s.student.Last_name() = 'Smith';
以下の同等なSELECT文では、.ALL表記を使用していません。
SELECT s.college.school().school_name(), s.college.school().GPA(), s.college.major(), s.college.minor() FROM student_record s WHERE s.student.first_name() = 'Steven' AND s.student.last_name() = 'Smith';