我正在尝试对oracle数据库上的视图进行极小的更改,但让我感到困惑的是我想要更改的视图的基表/视图似乎不存在。
首先我这样做了:
从all_views中选择文本,其中view_name ='(查看名称)';
并获得了视图文本,当然是这样的:
选择 (田) FROM(表)
尝试单独运行此查询会返回错误,指出此表或视图不存在。搜索all_表上的表名和视图列表不会返回任何内容。使用相同的源select语句创建一个新视图告诉我我无法创建它因为表或视图不存在。现在,这是一个生产数据库,所以这应该工作,因为我可以使用现有的视图。我对oracle数据库没有多少经验,所以我可能在这里遗漏了一些东西。
答案 0 :(得分:4)
我认为该视图位于另一个架构中。这是否与第一个查询的返回值相同:
select text from all_views where view_name='(view name)' and owner = user;
如果没有返回任何行,则需要查找视图的所有者:
select owner from all_views where view_name = '(view_name)';
将SQL更改为
select (fields) from (view_owner).(table);
答案 1 :(得分:1)
即使“FORCE”选项中没有基表,也可以创建一个视图(“NO FORCE”是
默认值)通过这种方式:
CREATE FORCE VIEW test_view AS
SELECT c1, c2 FROM test_table; -- table, which does not exist yet.
由于我们没有使用FORCE选项,因此未创建视图。但是,尝试访问
view会出错,因为表TEST_TABLE尚不存在。
答案 2 :(得分:0)
答案 3 :(得分:0)
通过使用“FORCE”,我们还可以通过双表创建视图(oracle的默认表)。
1-示例:创建强制视图v1作为从双重选择a,b,c;
警告:使用编译错误创建的视图。
2-example:create force view v2 as select * from dual;
答案:已创建视图。
答案 4 :(得分:0)
您应该使用force关键字。
<div class="my-button" data-featherlight="#mylightbox" data-jarallax data-speed="0.2">Content</div>