从公共部门调用PRIVATE包过程

时间:2017-05-10 03:01:55

标签: oracle plsql

我正在尝试使用公共和私有过程创建一个包,如下所示。但是我无法编译它:

df$Value<-as.numeric(df$Value)

1 个答案:

答案 0 :(得分:2)

最简单的方法是将私有程序放在包中。 打包的过程或函数只能在包体中看到公共的或在它们之前声明的过程。

create or replace package body tst_pkg
as

    procedure priv_proc ( p_id integer )
    is
    begin
            dbms_output.put_line ( 'In PRIV_PROC P_ID: ' || p_id );
    end;

    procedure local_pkg ( p_id integer )
    is
    begin
            dbms_output.put_line ( 'P_ID: ' || p_id );
            dbms_output.put_line ( 'Now calling PRIV_PROC' );
            tst_pkg.priv_proc ( 999 );
    end;

    end tst_pkg;
    /

很偶然你可能有代码,其中程序BLUE调用程序RED,程序RED调用程序BLUE,你必须使forward declarations

变得复杂
create or package body pkg_col is
  --
  procedure blue (p_in in number);
  procedure red (p_in in number;
  --
  procedure blue (p_in in number) is
  begin
    red (1);
  end blue;
  procedure red (p_in in number) is
  begin
    if p_in > 1 then
      blue (2);
    end if;
  end red;
end pkg_col;