指定されたマテリアライズド・ビューを即時ビューとして定義できるかどうかを返します。
sa_materialized_view_can_be_immediate( view_name , owner_name )
view_name マテリアライズド・ビューの名前を指定する CHAR(128) パラメータ。view_name が NULL の場合、エラー「テーブル '...' が見つかりません。
」が返されます。
owner_name マテリアライズド・ビューの所有者を指定する CHAR(128) パラメータ。owner_name が NULL の場合、エラー「テーブル '...' が見つかりません。
」が返されます。
指定された手動ビューを即時ビューに変更できるかどうかについては、制限があります。このシステム・プロシージャは、変更が許可されるかどうかを確認するときに使用します。即時ビューの作成に関する追加制限のリストについては、即時ビューの追加の制限を参照してください。
sa_materialized_view_can_be_immediate システム・プロシージャは、指定されたマテリアライズド・ビューに関する次の情報を返します。
カラム名 | データ型 | 説明 |
---|---|---|
SQLStateVal | CHAR(6) | 返される SQLSTATE。 |
ErrorMessage | LONG VARCHAR | SQLSTATE に対応するエラー・メッセージ。 |
結果セット内のそれぞれのローが、ビューについて返される 1 つの SQLSTATE に対応します。そのため、マテリアライズド・ビュー定義が複数の制限に違反している場合は、そのビューの複数のローが結果に格納されます。
このシステム・プロシージャの出力を sa_materialized_view_info システム・プロシージャの出力と結合すると、ビューのステータスに関する情報と、ビューを即時ビューに変更できるかどうかの情報を取得できます。sa_materialized_view_info システム・プロシージャの「例」の項を参照してください。
DBA 権限。または、DBO が所有するプロシージャに対する実行パーミッション。
指定したマテリアライズド・ビューのすべてのメタデータと依存性は、サーバのキャッシュにロードされます。
次の文を実行し、手動ビュー view10 を作成してそのビューをリフレッシュします。
CREATE MATERIALIZED VIEW view10 AS (SELECT C.ID, C.Surname, sum(P.UnitPrice) as revenue, C.CompanyName, SO.OrderDate FROM Customers C, SalesOrders SO, SalesOrderItems SOI, Products P WHERE C.ID = SO.CustomerID AND SO.ID = SOI.ID AND P.ID = SOI.ProductID GROUP BY C.ID, C.Surname, C.CompanyName, SO.OrderDate); REFRESH MATERIALIZED VIEW view10; |
次のクエリを使用して、ビュー view10 を即時ビューに変更できない理由を検索します。
SELECT SQLStateVal AS "SQLstate", ErrorMessage AS Description FROM sa_materialized_view_can_be_immediate( 'view10', 'DBA' ) ORDER BY SQLSTATE; |
SQLstate | 説明 |
---|---|
42WC3 | マテリアライズド・ビュー view10 を即時に変更できません。すでに初期化されています。 |
42WCA | マテリアライズド・ビュー view10 を即時に変更できません。NULL 入力不可のカラムにユニークなインデックスがありません。 |
42WC6 | マテリアライズド・ビューを即時に変更できません。COUNT(*) が SELECT リストの一部に必要です。 |
42WC7 | マテリアライズド・ビューを即時に変更できません。非集合の NULL 入力不可のカラムにユニークなインデックスがありません。 |
Copyright © 2009, iAnywhere Solutions, Inc. - SQL Anywhere 11.0.1 |