Oracle PL / SQL - 如何创建程序包本地别名而不创建公共同义词?

时间:2016-10-28 19:10:35

标签: oracle plsql

我多次在另一个包中引用相同的单个存储过程 我想知道你是否可以为其他程序创建一个包级别的同义词,而不是每一个都使用pkg_name.? 这也会给它一些继承。

基本上,我试图在Java中模仿static importextends

而不是:

CREATE OR REPLACE PACKAGE BODY pkg
IS
   PROCEDURE test
   IS
   BEGIN
      some_name_utils.do_lots_of_stuff()
   END;
BEGIN
END;
/

我想做这样的事情:

CREATE OR REPLACE PACKAGE pkg
IS
   SYNONYM do_lots_of_stuff FOR some_name_utils.do_lots_of_stuff;

   PROCEDURE test;
END;
/
CREATE OR REPLACE PACKAGE BODY pkg
IS
   PROCEDURE test
   IS
   BEGIN
      do_lots_of_stuff()
   END;
BEGIN
END;
/

1 个答案:

答案 0 :(得分:5)

我不确定我是否可以说我同意这种做法;如果其他包更改,您还必须记住在此更新它。但是,以下内容可以满足您的目的。

CREATE OR REPLACE PACKAGE BODY pkg
IS
   PROCEDURE do_lots_of_stuff
   IS
   BEGIN
      some_name_utils.do_lots_of_stuff();
   END;

   PROCEDURE test
   IS
   BEGIN
      do_lots_of_stuff;
   END;
BEGIN
END;
/