2013-06-20 82 views
0

我有一个过程配置Oracle名称解析

shema_name.package_name.procedure_name 

使用数据库软件编写调用它像:

call package_name.procedure_name; 

如何配置登录软件使用访问数据库,以便名称解析正确执行?请注意,登录访问数据库和过程定义器是不同的。

回答

2

你有2种选择:

  • 创建一个同义词:

创建同义词程序包为schema_name.package_name

  • 使用CURRENT_SCHEMA会话参数:

ALTER SESSION设置CURRENT_SCHEMA = SCHEMA_NAME

+0

第二个选项会阻止我以通常的方式使用以前的current_schema表吗? – Basilevs

2

将所有引用的对象公开为同义词,如下所示。

或者,如果只有一个模式引用它们,并且您不想污染公共名称空间 - 仅在该模式中生成同义词。

+1

我会避免公共同义词在可能的情况。 –

+0

我也是。这就是我写第二行的原因。但是如果他有三百个不同的用户使用这个模式 - 可能会创建一组公共同义词将是一个更好的主意,然后是300个副本。至于'set current_schema'方法 - 这意味着你应该有权访问有问题的软件源代码,我觉得他没有。 –

+0

不确定,但基于应用程序名称的登录触发器可能会执行“更改会话” –