小编典典

从Oracle中的另一个架构中选择数据

sql

我想执行一个查询,该查询从与数据库连接中指定的模式不同的模式中选择数据(相同的Oracle服务器,相同的数据库,不同的模式)

我有一个与Oracle服务器通信的python应用程序。它打开与数据库(服务器/架构)A的连接,并对数据库中的表执行选择查询。

我尝试了以下方法:

select .... 
from pct.pi_int, pct.pi_ma, pct.pi_es
where ...

但我得到:

ORA-00942: table or view does not exist

我还尝试用括号将模式名称括起来:

from [PCT].pi_int, [PCT].pi_ma, [PCAT].pi_es

我得到:

ORA-00903: invalid table name

使用Django应用程序内部的cx_Oracle python模块执行查询。

可以这样做还是应该建立新的数据库连接?


阅读 208

收藏
2021-03-23

共1个答案

小编典典

您用来连接数据库的用户(A在本例中为用户)是否有权SELECT访问PCT架构中的对象?假设A没有此访问权限,您将收到“表或视图不存在”错误。

最有可能的是,您需要DBA授予用户A对所需PCT模式中任何表的访问权限。就像是

GRANT SELECT ON pct.pi_int
   TO a;

完成此操作后,您应该能够PCT使用pct.pi_int在问题中最初演示的语法在架构中引用对象。方括号语法方法将不起作用。

2021-03-23