如何在Oracle查询中使用多个模式?

时间:2015-06-24 17:53:51

标签: sql oracle oracle11g

问题:需要在Oracle SQL Developer中的两个(或更多个)不同模式或连接中使用数据。例如:财务架构中的发票数据和库存架构中的销售数据。需要通过将已开发票的产品连接到库存架构中的产品来获取发票数据的产品信息。

我是Oracle新手,来自SQL Server。在T-SQL中,我只想输入数据库名称或IP地址。例如(随机,组合IP):

[555.00.12302].Sales_DB.Item_Table.Item_Price_Column

在SQL Developer for Oracle中(使用11g),我无法弄清楚如何在select查询中调用另一个连接或模式来从该模式加入表。这可能吗?

1 个答案:

答案 0 :(得分:1)

我很确定你的意思并不是“表空间” - 在查询对象时,你不会引用存储对象的表空间。某些对象存储在多个表空间中。您可能意味着“架构”或者您可能意味着“数据库”,其中Oracle中的架构与SQL Server中的数据库最相似。

如果要访问存储在同一数据库中不同模式中的表

select *
  from schema_name.table_name

假设您在table_name架构中拥有schema_name的权限。您可以创建公共或私人同义词或更改会话的current_schema以避免为模式名称添加前缀,但这只是完全限定名称的语法糖。

如果您确实想要访问存储在其他数据库中的数据,则需要创建数据库链接。这是一个存储在数据库中的对象,该对象创建与另一个数据库的连接。创建数据库链接时有很多选项。一种选择,假设两个数据库中存在相同的用户,每个

中具有相同的密码
CREATE DATABASE LINK my_link
  CONNECT TO CURRENT_USER
  USING '<<TNS alias of remote database>>';

SELECT *
  FROM schema_name.table_name@my_link;