首先
我是一个甲骨文新手,我没有一个当地的甲骨文大师来帮助我。
这是我的问题/疑问
我有一些SQL脚本,它们必须发布到许多Oracle示例中。这些脚本创建存储过程。
创建存储过程的架构与包含存储过程从中读取的表的架构不同。
在不同的示例上,包含表的模式具有不同的名称。
显然,我不希望必须编辑脚本来使它们为不同的示例定制。
有人向我建议,解决办法可能是设置同义词。
是否可以为每个示例上的表模式定义一个同义词,并在脚本中使用该同义词?
有没有其他方法可以使它工作而不必每次都编辑脚本?
谢谢你的帮助。
3条答案
按热度按时间szqfcxe21#
可以,您可以为方案创建同义词。
假设您已经有一个名为ORA的模式...
更多信息请访问:https://dbaclass.com/article/how-to-create-synonym-for-a-schema/
2mbi3lxu2#
这将有助于知道什么版本的Oracle,但as of 10g--No, you can't make a synonym for a schema。
您可以为表创建同义词,这将允许您不必在脚本中指定模式,但这意味着同义词必须在每个示例上相同才能有任何用处...
另一种选择是用变量替换模式引用,这样当脚本运行时,用户会被提示输入模式名称。我更喜欢这种方法,因为它工作量更小。下面是一个在SQLPlus中工作的示例:
这样做的好处是,运行脚本的人只会对每个变量提示一次,而不是每次遇到变量时都提示。因此,要小心错别字:)
lyfkaqu13#
是的,有一种隐藏的方法可以创建模式同义词。
有一个隐藏的参数
_enable_schema_synonyms
,默认为false,但可以将其设置为true并创建同义词。