如何在Package Body oracle pl / sql中添加第二个私有函数?

时间:2016-12-05 01:25:56

标签: sql database oracle plsql oracle10g

嘿伙计我遇到一个问题,当我尝试在我的第一个私有标题下面添加第二个私有标题时出现错误。

CREATE OR REPLACE PACKAGE TEST IS
PROCEDURE TEST2(VARIABLE1 IN NUMBER, VARIABLE2 OUT NUMBER);
END;

CREATE OR REPLACE PACK BODY TEST IS
FUNCTION PRIVATE1 (VARIABLE1 IN NUMBER)
RETURN NUMBER;
FUNCTION PRIVATE2 (VARIABLE2 IN NUMBER)
RETURN NUMBER;
PROCEDURE TEST2(VARIABLE IN NUMBER, VARIABLE OUT NUMBER)
BEGIN
......
END;
FUNCTION PRIVATE1 (VARIABLE1 IN NUMBER)
RETURN NUMBER
IS
BEGIN
........
END;
FUNCTION PRIVATE2 (VARIABLE2 IN NUMBER)
RETURN NUMBER
IS 
BEGIN
.......
END;
END;

有关如何修复它的任何建议吗?

2 个答案:

答案 0 :(得分:1)

FUNCTION PRIVATE2 (VARIABLE2 IN NUMBER)
RETURN NUMBER; // REMOVE semi colon from here 
IS 
BEGIN
.......
END;

答案 1 :(得分:0)

您可能在SQL中使用私有函数 - 这不受支持。为了在SQL中使用函数,您必须在包规范中定义它。

我们需要private1和private2函数的源代码才能提供更多帮助。

[编辑]以下是由于在SQL中使用私有函数而无法编译的包的示例:

create or replace package test_pkg is
end;
/
create or replace package body test_pkg is

  function F1 return number is
  begin
    return 2;
  end;

  function F2 return number is
    lnNumber number;
  begin
    select F1 -- function declared only in the package body
      into lnNumber
      from dual;
    return lnNumber + 1;
  end;

end;
/
PLS-00231: function 'F1' may not be used in SQL
PL/SQL: ORA-00904: "F1": invalid identifier
PL/SQL: SQL Statement ignored