1

非常に多くのデータベース ビューをすべて作成する作成スクリプトを生成したいと考えています。私はすでにメニューを使用してOracle SQL Developerでそれを行う方法を知っています:Tools> Database Exports。ただし、エクスポート作成ビュー スクリプトを実行すると問題が発生します。以下、課題です。

問題 #1 ビューの作成順序が正しくありません。以下の例では、スクリプト内で MY_VIEW_B が最初に作成されてから、その依存関係 MY_VIEW_A が作成されます。依存関係の正しい順序でスクリプトを生成するにはどうすればよいですか?

CREATE OR REPLACE MY_VIEW_B ("COLUMN1", "COLUMN2") AS
SELECT "COLUMN1", "COLUMN2"
FROM MY_VIEW_A;

CREATE OR REPLACE MY_VIEW_A ("COLUMN1", "COLUMN2") AS
SELECT "COLUMN1", "COLUMN2"
FROM TABLE_A;

問題 #2 セミコロン「;」ビューコードの最後の行に引き継がれますが、問題はコメント行です。したがって、スクリプトを実行するとエラーが発生します。これは、「;」で終了しないためです。コメントがある行に移動されたため、セミコロン。ビューコードの最後の行が「;」になるようにスクリプトを生成するにはどうすればよいですか セミコロンは、コメントであるビュー コードの最後の行から 2 番目に自動的に繰り越されませんか?

CREATE OR REPLACE MY_VIEW_C ("COLUMN1", "COLUMN2") AS
SELECT "COLUMN1", "COLUMN2"
FROM TABLE_B
--THIS IS A COMMENT;

CREATE OR REPLACE MY_VIEW_C ("COLUMN1", "COLUMN2") AS
SELECT "COLUMN1", "COLUMN2"
FROM TABLE_C;

ありがとうございました。

4

1 に答える 1

5

オラクルがここに述べているように:

ビューの実表または参照されるオブジェクト型が存在するかどうか、またはビューを含むスキーマの所有者がそれらに対する権限を持っているかどうかに関係なく、ビューを作成する場合は FORCE を指定します。ビューに対して SELECT、INSERT、UPDATE、または DELETE ステートメントを発行するには、これらの条件が満たされている必要があります。

ビュー定義に何らかの制約が含まれている場合、ベース テーブルが存在しないか、参照されるオブジェクト タイプが存在しない場合、CREATE VIEW ... FORCE は失敗します。CREATE VIEW ... FORCE は、ビュー定義が存在しない制約を指定している場合にも失敗します。

また、2番目の問題を確認TerminatorPretty Printて対処します。

ここに画像の説明を入力

でテスト済みOracle SQL Developer Version 4.1.3.20 Build MAIN-20.78

于 2017-11-17T07:19:37.490 に答える