【问题标题】:Oracle PL/SQL - How to create a package local alias to a procedure w/out creating a public synonym?Oracle PL/SQL - 如何在不创建公共同义词的情况下为过程创建包本地别名?
【发布时间】:2016-10-29 03:26:56
【问题描述】:

我在另一个包中多次引用同一个存储过程。
我想知道您是否可以为另一个过程创建一个包级别的同义词,而不是为每个过程使用 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;
/

【问题讨论】:

    标签: oracle plsql


    【解决方案1】:

    我不确定我是否可以说我同意这种方法;如果其他包发生更改,您必须记住在此处也进行更新。但是,以下内容将满足您的要求。

    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;
    /
    

    【讨论】:

    • 是的,这就是我现在正在做的事情。另外,无论如何,您都必须在两个地方都进行更改。只是希望有一个单线。如果没有人提出其他方法,我会将您的方法标记为解决方案。
    猜你喜欢
    • 2017-01-02
    • 2010-11-14
    • 1970-01-01
    • 1970-01-01
    • 2017-12-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-21
    相关资源
    最近更新 更多