Oracle:为什么不能使用<schema_name>。<view_name>从VIEW中选择?

时间:2018-10-11 16:28:26

标签: oracle select view schema

我正在使用的核心产品上进行了一些更改,有些表现在变为视图,并且它们不再起作用,因为无法使用前面的模式名称引用视图。

例如,以下内容将返回错误:ORA-00942:表或视图不存在

select * from my_schema.my_view;

直接从视图中选择效果很好

select * from my_view;

在使用表的情况下,上述两种情况都可以正常工作,只是视图不接受前面的schema_name。

那是为什么?有没有不错的解决方法?

编辑:选择是由my_schema用户执行的

3 个答案:

答案 0 :(得分:1)

感谢您的帮助,尤其是@mathguy。

基本上,问题在于my_view实际上是my_view_r的公共同义词,my_view_r是实际的视图并且是公共的,您不能像我正在尝试的那样使用前面的模式名称来调用它。例如:

select * from my_schema.my_view;

也许对将来遇到此问题的其他人会有所帮助,解决方法是使用如下所示的架构名称为同一视图(my_view_r)创建私有同义词:

create synonym my_schema.my_view for my_view_r;

这是使用架构名称调用同义词的唯一方法。

答案 1 :(得分:0)

这是拨款问题。

const people = [{name: "Johhny", born:1980, passed:2080},{name: "Jenny", born:1990, passed:2093},{name: "Jan", born:1999, passed:2096}];
	
const result = people.map(person => ({
  ...person,
  age: person.passed - person.born
}))

console.log(result)

答案 2 :(得分:0)

运行以下命令,确保您的架构确实是所有者:

Select * from all_objects where object_name = 'my_view';

我和所有者baninst1一起观看了stvytro。有一个同名的公共同义词。两者都可以工作:

select * from STVYTRO;
select * from baninst1.stvytro;