PL / SQL中软件包的别名或同义词

Mik*_*ike 5 oracle plsql

我有一个系统,已将我的功能分为几个不同的程序包。目前,我正在使用packagename.object的点符号来调用函数和过程。

我的某些软件包名称(由于公司编码标准)相当长

我可以为该软件包创建别名/同义词来缩短代码吗?

即:代替pkge_member_utilities.CreateMember,我可以为该包创建一个同义词/别名“ util”,然后在整个代码中使用util.CreateMember

我已经阅读了有关CREATE SYNONYM的文档,但由于它似乎用于立即执行,而我想在我的代码中引用同义词,因此它令人困惑

再次,对模糊的术语表示歉意,因为我来自Java背景

非常感谢您的宝贵时间

麦克风

Mic*_*ill 2

尽管我同意上面的评论,但这很大程度上是为了打破标准。然而,有时候标准是可怕的,只要有合适的单元测试,在合适的情况下,又有什么坏处呢?

create or replace package long_package_name as
  function give_me_zero return number;
end;
/

create or replace package body long_package_name as
  function give_me_zero return number is begin return 0; end;
end;
/

create or replace synonym pkg for long_package_name;

-- either works the same
select long_package_name.give_me_zero from dual;
select pkg.give_me_zero from dual;
Run Code Online (Sandbox Code Playgroud)

  • @user272735 - 收益?可能是代码可读性。如果刚获得 EMBA 的开发经理决定所有包都需要命名为 pkg_{module#}_{customer#},这会导致用于销售订单 API 的包名为 PKG_3498_U3450S6 而不是 SALES_ORDER_API。并且您有广泛使用 PKG_3498_U3450S6 的代码。另一个可能的好处是:如果某些 dillweed 使用区分大小写的名称作为包名称,并且您想要对它们进行区分大小写,该怎么办? (3认同)