機能
記述形式
参照項番
値式 → “2.11 値式”
探索条件 → “2.13 探索条件”
列指定 → “2.4 列指定”
数値関数 → “2.5.2 数値関数”
データ列値関数 → “2.5.3 データ列値関数”
日時値関数 → “2.5.4 日時値関数”
CASE式 → “2.6 CASE式”
ファンクションルーチン指定→ “2.5.5 ファンクションルーチン指定”
日本語文字列 → “2.1.3 トークン”
権限
ビュー表を定義するには、問合せ指定に指定した表に対するSELECT権が必要です。
ビューを定義することで、ビューの定義者がビューの導出元の表に対して保持している権限は、ビュー表に対しても付与されます。また、権限をほかの人に与える権限(付与権)についても、ビューの定義者がビューの導出元の表に対して保持している権限が付与権付きの場合は付与権付きで、そうでない場合は付与権なしで付与されます。
ビュー表を定義できるのは、スキーマの定義者とCREATE権を付与された人のみです。
ビュー表の問合せ指定にファンクションルーチンを指定した場合は、ファンクションルーチンに対するEXECUTE権が必要です。
一般規則
CREATE VIEW文を準備可能文として使用する場合、ホスト変数または動的パラメタを指定できません。
CREATE VIEW文にROWNUMは指定できません。
ビュー表の名前を指定します。
表名には、36文字以内の先頭が英字で始まる英数字、または18文字以内の日本語文字列を指定します。
表名は、修飾したスキーマ内で一意な名前であることが必要です。また、“RDBII”で始まる表名は指定できません。
ビュー定義がスキーマ定義に含まれる場合で、ビューの表名のスキーマ名の修飾を省略した場合は、スキーマ定義で指定したスキーマ名で修飾したとみなされます。また、スキーマ名で修飾する場合は、スキーマ定義で指定したスキーマ名であることが必要です。
ビューの表名を修飾するスキーマ名と問合せ指定中の表名を修飾するスキーマ名は、同一のデータベース中に定義されていることが必要です。
ビュー列リストは、ビュー表を構成する列の名前を、カンマ(,)で区切って記述します。
ビュー列リストの指定方法は以下のとおりです。
列名は、ビュー表内で一意な名前であることが必要です。
列名の数は最大32,000個です。
列名の個数は、問合せ指定に指定する選択リストの個数と同じであることが必要です。
ビュー列リストに行識別子“ROW_ID”は指定できません。
問合せ指定に以下の条件を含んでいる場合、ビュー列リストを省略することはできません。条件を含まない場合、ビュー列リストを省略することができます。このとき、問合せ指定の選択リストに指定した列名が、ビュー表を構成する列名となります。なお、選択リストにAS句を指定した場合、AS句の列名がビュー表を構成する列名となります。
選択リストに列名以外を指定して、AS句を指定していない。
選択リストに同一の列名を指定している。
問合せ指定の文字列の最大長は32,000バイトです。
システム表の表RDBII_SYSTEM.RDBII_DESCRIPTIONの列DESC_VALUEには30,000バイトまで格納します。
問合せ指定の結果を以下に示します。
表式の結果がグループ表でない場合、問合せ指定の結果は次のようになります。選択リストに集合関数指定がない場合、表式の結果の各行に選択リストの値式で示す演算が施された、行の集合となります。選択リストに集合関数の指定がある場合の結果は、表式の結果を集合関数に適用した1行となります。
表式の結果がグループ表の場合、問合せ指定の結果は次のようになります。結果の行の数はグループの数となります。各行の値は、選択リストに集合関数の指定がある場合には、グループを集合関数に適用した結果となり、列指定の場合には、グループ化列の値となり、グループ化関数の場合は、グループ化関数の値となります。なお、選択リストにGROUP BY句のAS句の列名を指定した場合は、対応するグループ化列、グループ化関数またはCASE式の値となります。
表式の結果が空であれば、問合せ指定の結果は、空の表となります。
問合せ指定が更新可能ならば、ビュー表は更新可能な表となります。そうでなければ、ビュー表は読込み専用の表となります。
問合せ指定の中に順序のCURRVALおよびNEXTVALを指定することはできません。
問合せ指定の中にASSIST指定を指定することはできません。
問合せ指定にXMLQUERY関数を指定することはできません。
問合せ指定にXMLEXISTS述語を指定することはできません。
DISTINCTは、問合せ指定の結果の各行同士がまったく同じ値を持つ行(重複行)がある場合、それらの行を1行とする場合に指定します。このとき、NULL値同士は等しいとみなされます。ALLは、重複行をそのまま残す場合に指定します。また、どらちも省略した場合は、ALLが指定されたものとみなします。
選択リスト中に含まれる列指定は、FROM句で指定した表の列またはGROUP BY句のAS句の列名であることが必要です。
選択リストに格納構造がOBJECTのBLOB型の列を複数指定することはできません。
表式の結果がグループ表の場合、選択リストの列指定は、グループ化列またはGROUP BY句のAS句の列名を指定するか、集合関数指定またはグループ化関数の引数で指定することが必要です。
表式の結果がグループ表でなく、選択リストに集合関数を指定する場合は、選択リストのすべてが集合関数指定であることが必要です。
選択リストのすべてが、定数または変数のみではいけません。必ず、列指定を含む値式を1つは指定することが必要です。
問合せ指定の選択リストに“*”を指定することはできません。
WITH CHECK OPTIONを指定した場合、問合せ指定の探索条件が真とならないようなINSERT文、UPDATE文:位置づけまたはUPDATE文:探索の実行は、例外(制約違反)となります。
WITH CHECK OPTIONを指定するとき、ビュー表は更新可能であることが必要です。
その他の構文要素の説明は、“3.26 DECLARE CURSOR(カーソル宣言)”を参照してください。
使用例
実表“会社表”からビュー表“会社表1”を定義します。このビュー表の定義者は、実表“会社表”のSELECT権とINSERT権を付与権付きで保持しているとします。
CREATE VIEW S1.会社表1 AS SELECT 会社名,電話番号,住所 FROM S1.会社表 WHERE 会社番号 <= 70
備考. ビュー表の定義者に対してビュー表“会社表1”のSELECT権とINSERT権がそれぞれ付与権付きで付与され、UPDATE権とDELETE権は付与されません。