如何查询表并将数据从另一个模式提取到 Oracle APEX 应用程序中?
How to query tables and pull data into an Oracle APEX application from another schema?
我在 Oracle APEX 应用程序中工作,并尝试在另一个架构(另一个 Oracle APEX 应用程序所在的架构)中查询 tables 以将数据提取到我的应用程序。
这些应用程序托管在同一个 APEX 工作区和同一个 Oracle 11g 实例上。我们的应用程序有 tables,它们在结构上与我们试图在其他模式中查询的 tables 相同。
查询时使用架构前缀 (SELECT * FROM "SCHEMA2".TABLE1;) 会引发 table 不存在的错误 (ORA-00942: table 或视图不存在)
我尝试的第二件事是在两个模式之间创建数据库 link,但是在尝试建立连接时出现以下错误:ORA-01031:权限不足
谁能找出我哪里出错了/帮我弄清楚如何查询其他模式?
数据库link用于涉及不同数据库的情况;您的模式驻留在同一个数据库中,这意味着第一次尝试是正确的:在 table 名称前加上其所有者前缀,例如
SELECT * FROM SCHEMA2.TABLE1
但是,首先 以 schema2
用户身份连接并发出
grant select on table1 to schema1;
否则,schema1
不能see
table。如果 schema1
应该用 table 做其他事情,您将必须授予额外的权限,例如 insert, update, delete, ...
.
我在 Oracle APEX 应用程序中工作,并尝试在另一个架构(另一个 Oracle APEX 应用程序所在的架构)中查询 tables 以将数据提取到我的应用程序。
这些应用程序托管在同一个 APEX 工作区和同一个 Oracle 11g 实例上。我们的应用程序有 tables,它们在结构上与我们试图在其他模式中查询的 tables 相同。
查询时使用架构前缀 (SELECT * FROM "SCHEMA2".TABLE1;) 会引发 table 不存在的错误 (ORA-00942: table 或视图不存在)
我尝试的第二件事是在两个模式之间创建数据库 link,但是在尝试建立连接时出现以下错误:ORA-01031:权限不足
谁能找出我哪里出错了/帮我弄清楚如何查询其他模式?
数据库link用于涉及不同数据库的情况;您的模式驻留在同一个数据库中,这意味着第一次尝试是正确的:在 table 名称前加上其所有者前缀,例如
SELECT * FROM SCHEMA2.TABLE1
但是,首先 以 schema2
用户身份连接并发出
grant select on table1 to schema1;
否则,schema1
不能see
table。如果 schema1
应该用 table 做其他事情,您将必须授予额外的权限,例如 insert, update, delete, ...
.