这个问题可能是蟾蜍特有的。我不知道Oracle如何存储视图,所以我将解释当我使用Toad时会发生什么。如果我得到一个特定于Oracle的答案,那就更好了。
我创造了一个相当复杂的观点。为了更清楚,我已经很好地格式化了代码,并在需要时输入了一些注释。当我需要对视图进行更改时,我使用Toad的“描述对象”窗口,在那里我可以找到一个脚本来重新创建视图。唯一的问题是我的所有格式都消失了。 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%';
Toad将在稍后描述时显示:
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%';
请注意,第一条评论已消失,格式完全不同。
我怀疑Oracle不存储视图的代码,只存储一些已解析的版本,并且当Toad启动脚本时,它会反转此解析版本并动态生成脚本。
要使Toad / Oracle保留原始格式,我需要做些什么?
(PS:我知道我可以更改Toad代码格式化程序的设置,但这不是我想要做的。由于我过去的一些有问题的选择,这个特殊的视图有几个级别的内联视图,我需要一个非常具体的格式,以明确发生了什么)
答案 0 :(得分:4)
select text from user_views
where view_name = 'YOUR_VIEW_NAME';
我测试过:
create view z_v_test as
select
-- te
--st
* from
dual;
它甚至保持空白。
答案 1 :(得分:2)
另一种方法是使用DBMS_METADATA:
select dbms_metadata.get_ddl('VIEW', 'YOUR_VIEW_NAME', user) from dual
这不仅适用于视图,也适用于(几乎)所有类型的数据库对象(表,触发器,函数......)。