5

この質問は、Toad 固有のものである可能性があります。Oracle がどのようにビューを格納するのかはよくわからないので、Toad を使用するとどうなるかを説明します。Oracle固有の回答が得られれば、なおさらです。

かなり複雑なビューを作成しました。わかりやすくするために、コードを適切にフォーマットし、必要に応じてコメントを入力しました。ビューに変更を加える必要があるときは、Toad の「describe objects」ウィンドウを使用します。ここで、ビューを再作成するためのスクリプトを見つけることができます。唯一の問題は、私のフォーマットがすべてなくなったことです。select キーワードの前 (ただし、"create view xxx as" の後) のコメントも消えます。

このスクリプトを入力してビューを作成すると:

create or replace view TestViewFormatting as
-- Here I have a long comment explaining the role of the 
-- view and certain things to be aware of if changing it. 
-- Unfortunately this comment will disappear...
select 
  name,          --This comment will be kept
  accountnumber  --This also
from
  debtable
where
  name like 'S%';

後で説明すると、ヒキガエルはこれを表示します。

DROP VIEW XXX.TESTVIEWFORMATTING;

/* Formatted on 04.07.2012 09:35:45 (QP5 v5.185.11230.41888) */
CREATE OR REPLACE FORCE VIEW XXX.TESTVIEWFORMATTING
(
   NAME,
   ACCOUNTNUMBER
)
AS
   select name,                                    --This comment will be kept
               accountnumber                                       --This also
     from debtable
    where name like 'S%';

最初のコメントが消えており、形式がまったく異なることに注意してください。

オラクルはビューのコードを保存せず、解析されたバージョンだけを保存していると思われます.Toadがスクリプトを起動すると、この解析されたバージョンを逆にして、その場でスクリプトを生成します.

Toad/Oracle で元のフォーマットを維持するにはどうすればよいですか?

(追伸: Toad のコード フォーマッタの設定を変更できることはわかっていますが、これは私がやりたいことではありません。過去に疑わしい選択をしたため、この特定のビューにはいくつかのレベルのインライン ビューがあり、非常に具体的なビューが必要です。何が起こるかを明確にするための書式設定)

4

2 に答える 2

5
select text from user_views
where view_name = 'YOUR_VIEW_NAME';

私は以下でテストしました:

create view z_v_test as 
select
-- te

--st
* from 
dual;

空白行も保持します。

于 2012-07-04T13:05:14.930 に答える
2

別の方法は、DBMS_METADATAを使用することです。

select dbms_metadata.get_ddl('VIEW', 'YOUR_VIEW_NAME', user) from dual

これは、ビューだけでなく、(ほぼ)すべての種類のデータベースオブジェクト(テーブル、トリガー、関数など)に対しても機能します。

于 2012-07-05T07:36:25.947 に答える