【问题标题】:In Oracle PL/SQL is there any way to import packages and their members?在 Oracle PL/SQL 中是否有任何方法可以导入包及其成员?
【发布时间】:2011-08-04 18:03:55
【问题描述】:

给定一个包裹:

create or replace package foo as
  f1 number := 1;
end;
/

代替:

declare
begin
  dbms_output.put_line('f1 = ' || foo.f1);
end;
/

我想写:

declare
begin
  -- pseudocode not a valid PL/SQL
  import dbms_output.*;
  import foo.*;
  put_line('f1 = ' || f1);
end;
/

但是该怎么做呢?

Jeff 编辑:(试图保持 PL/SQL 中的工作方式的精神)

DECLARE
  PRAGMA IMPORT dbms_output AS d;
  PRAGMA IMPORT foo AS f;
BEGIN
  d.put_line('f1 = ' || f.f1);
END;
/

【问题讨论】:

  • 如果另一个包定义了“put_line”方法(或f1)怎么办?
  • 这是一个非常有效的观点,但我相信如果 PL/SQL 具有此功能,它就会像许多其他语言一样得到解决。
  • 就个人而言,我认为虽然从表面上看这是一个不错的功能,但有一个缺点是它消除了函数/过程的全名规范的自我记录性质.作为一个普通程序员阅读 Java 代码的困难之一可能是找出特定函数的定义位置。
  • DCookie:我的例子怎么样(编辑 Q)?

标签: oracle plsql namespaces packages


【解决方案1】:

很简单,你不能。抱歉,没有其他答案!

【讨论】:

  • 我认为这将是对语言的一个很好的补充。快,有人告诉 Bryn Llewellyn!
【解决方案2】:

当然可以!

:) 有点……

declare
  procedure put_line (p in varchar2) is begin dbms_output.put_line(p); end;
  function f1 return number is begin return foo.f1; end;
begin
   put_line('f1 = ' || f1);
end;
/

【讨论】:

    猜你喜欢
    • 2021-10-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-01-18
    • 1970-01-01
    相关资源
    最近更新 更多