我正在尝试对oracle数据库上的视图进行极小的更改,但令我困惑的是我想要更改的视图的基表/视图似乎不存在 .
首先我这样做了:
从all_views中选择文本,其中view_name ='(查看名称)';
并获得了视图文本,当然这是这样的:
SELECT(fields)FROM(表)
尝试单独运行此查询会返回错误,指出此表或视图不存在 . 搜索all_表上的表名和视图列表不会返回任何内容 . 使用相同的源select语句创建一个新视图告诉我我无法创建它因为表或视图不存在 . 现在,这是一个 生产环境 数据库,所以这应该工作,因为我可以使用现有的视图 . 我对oracle数据库没有多少经验,所以我可能在这里遗漏了一些东西 .
5 回答
我打赌视图是在另一个架构中 . 这是否与您的第一个查询返回相同:
如果没有返回任何行,则需要查找视图的所有者:
并将您的SQL更改为
即使“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尚不存在 .
哇,没关系 . 他们甚至没有要我这样做 . 我错过了原始电子邮件中的那部分内容 .
通过使用“FORCE”,我们还可以通过双表创建视图(oracle的默认表) .
1-示例:创建强制视图v1作为从双重选择a,b,c;
警告:使用编译错误创建的视图 .
2-example:create force view v2 as select * from dual;
答案:查看已创建 .
你应该使用force关键字..