繁体   English   中英

需要更新Oracle视图,但基本表不存在

[英]Need to update an Oracle view, but the base table doesn't exist

我正在尝试对oracle数据库上的视图进行非常小的更改,但令我感到困惑的是,我要更改的视图的基本表/视图似乎不存在。

首先,我这样做:

从all_views中选择文本,其中view_name ='(视图名称)';

并获得了视图文本,当然是这样的:

选择(字段)来自(表)

尝试单独运行此查询将返回一个错误,指出该表或视图不存在。 搜索表名列表和all_表上的视图将不返回任何内容。 使用相同的源select语句创建一个新视图会告诉我,因为该表或视图不存在,所以无法创建该视图。 现在,这是一个生产数据库,因此应该可以正常工作,因为我可以使用现有视图。 我对oracle数据库没有太多经验,因此我可能在这里缺少一些东西。

我敢打赌,该视图位于另一个架构中。 这是否返回与您的第一个查询相同的结果:

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);

即使没有基表,也可以通过“ FORCE”选项创建视图(“ NO FORCE”为

默认值)通过这种方式:

CREATE FORCE VIEW test_view AS

SELECT c1, c2 FROM test_table; -- table, which does not exist yet.

由于我们未使用FORCE选项,因此未创建视图。但是,尝试访问

视图给出错误,因为表TEST_TABLE还不存在。

通过使用“ FORCE”,我们还可以通过双表(oracle的默认表)创建视图。

1-示例:创建力视图v1,从对偶中选择a,b,c;

警告:创建视图时出现编译错误。

2-示例:创建强制视图v2作为select * from dual;

答:视图已创建。

哇没关系 他们甚至都不要求我这样做。 我错过了原始电子邮件中的那部分。

您应该使用force关键字。

create force view my_view as elect column1 from table_test -- table is not exists here..

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM