对同义词的操作
Oracle 电子商务适配器允许对同义词执行操作。 同义词是数据库对象的别名或友好名称, (如表、视图、存储过程、函数和包) 。 有关 Oracle 中的同义词的详细信息,请参阅 https://go.microsoft.com/fwlink/?LinkId=138058。
使用同义词的优点
同义词在以下方案中非常有用:
使用不同的架构:如果使用的是不同的架构,并且需要跨架构访问对象,则必须使用不同的 SQL 语句来访问这些对象。 可以为架构中的对象创建同义词,并在 SQL 语句中使用同义词来访问该对象。 如果需要访问不同架构中的基础对象,请修改同义词的定义以指向不同架构中的对象。 因此,基于同义词的应用程序在 SQL 语句中无需修改即可继续运行。
例如,假设测试和生产环境有两个相同的架构:“Test”和“Prod”。 若要访问“Test”架构中名为“Employee”的表,必须使用
Test.Employee
或Employee
(如果“Test”是 SQL 语句中的默认架构) 。 如果要在生产架构中使用“Employee”表,现在Prod.Employee
必须使用 或Employee
(SQL 语句中将默认架构更改为“Prod”) 。 若要解决此问题,可以为“Test.Employee”表创建同义词 (说“EMP”) ,然后在 SQL 语句中使用它。 每当需要对“Prod.Employee”表执行操作时,请修改“EMP”同义词的定义,使其指向“Prod.Employee”表。 这可确保无需修改 SQL 语句即可对不同架构中的对象执行操作。基础对象中的更改:同义词使你免受对其执行操作的基础对象的名称或位置的任何更改的影响。 可以修改同义词定义,以适应基础对象的名称或位置的任何更改。
例如,假设你在其中一个存储过程中使用表。 现在,如果表名发生更改或表移动到其他某个位置,则存储过程将停止工作。 若要解决此问题,可以在存储过程中使用表的同义词,并在表的名称或位置发生更改时更新同义词定义。
简化且安全的访问:在分布式环境中,必须使用架构名称和对象名称,以确保访问正确的对象。 此外,还必须确保用户对目标对象具有所需的权限。 为了简化此操作,可以通过创建具有对象完全限定路径的同义词来为对象分配简单名称,然后授予对同义词的适当权限。
在适配器中使用同义词
Oracle 电子商务适配器在 Oracle 中公开以下同义词:
表
视图
存储过程
函数
包
其中每个项目的同义词与使用适配器服务外接程序、添加适配器元数据向导和添加适配器服务引用插件中的相应基础项目一起公开。 例如,基于架构的视图下的“表”节点将显示表的所有同义词以及架构中的数据库表,基于架构的视图下的“视图”节点将显示视图的所有同义词以及架构中的数据库视图等。
对于在表和视图中创建的同义词,将分别公开与基础表和视图相同的操作。 例如,如果基础表和视图包含 LOB 列,则这些表和视图的同义词还将公开表同义词的 Read_<LOBColName> 和 Update_<LOBColName> 操作,以及视图同义词的 Read_<LOBColName> 操作。
对于在存储过程、函数和包上创建的同义词,同义词作为操作以及架构中相应的基础存储过程、函数和包公开。
注意
Oracle 电子商务适配器仅支持本地同义词。 这意味着,针对本地服务器上的项目的适配器仅支持这些同义词。
此外,同义词的消息操作与基础对象相同,但对其执行操作的项目名称除外。 例如,SCOTT 架构中表的 Select 操作的消息操作为: Tables/Select/SCOTT/[TABLE_NAME]
。 如果要对 SCOTT 架构中同一表的同义词执行 Select 操作,则消息操作将为: Tables/Select/SCOTT/[SYNONYM_NAME]
。
在适配器中对同义词调用操作时,适配器会调用 Oracle 数据库中的同义词来执行该操作。 但是,适配器使用同义词定义中的基础对象名称来提取元数据。
同义词可用于常规出站操作、复合操作和轮询。
注意
可以像搜索其他对象一样,在“使用适配器服务加载项”或“添加适配器服务引用插件”中搜索同义词。 但是,无法像对包中的过程一样,从跳过级别节点搜索同义词包中的过程。 有关在适配器中搜索操作的信息,请参阅 使用 SQL 适配器浏览、搜索和获取 SQL 操作的元数据。