在oracle中的包中创建正文时出错

在oracle中的包中创建正文时出错,oracle,plsql,oracle11g,Oracle,Plsql,Oracle11g,我有一个有规格和机身的包裹 它的规格是 CREATE OR REPLACE PACKAGE OT.PK_TEST IS FUNCTION PRNT_STRNG RETURN VARCHAR2; PROCEDURE PR_SUPERHERO(F_NAME VARCHAR2,L_NAME VARCHAR2); PROCEDURE PR_new(full_name VARCHAR2); END PK_TEST; / 其主体是: CREATE OR REPLACE PACKAGE BODY OT.P

我有一个有规格和机身的包裹

它的规格是

CREATE OR REPLACE PACKAGE OT.PK_TEST IS
FUNCTION PRNT_STRNG RETURN VARCHAR2;
PROCEDURE PR_SUPERHERO(F_NAME VARCHAR2,L_NAME VARCHAR2);

PROCEDURE PR_new(full_name VARCHAR2);
END PK_TEST;
/
其主体是:

CREATE OR REPLACE PACKAGE BODY OT.PK_TEST IS
FUNCTION PRNT_STRNG 
RETURN VARCHAR2
IS
BEGIN
RETURN 'SUMAN';
END PRNT_STRNG;
PROCEDURE PR_SUPERHERO(F_NAME VARCHAR2,L_NAME VARCHAR2) 
IS
OLD_NAME VARCHAR2(255);
BEGIN
DBMS_OUTPUT.PUT_LINE(F_NAME);
DBMS_OUTPUT.PUT_LINE(L_NAME);
OT.PR_new(f_name||L_NAME);
DBMS_OUTPUT.PUT_LINE('----------');
OLD_NAME :=OT.PRNT_STRNG;
DBMS_OUTPUT.PUT_LINE(OLD_NAME);
END PR_SUPERHERO;
PROCEDURE PR_new(full_name VARCHAR2)
IS
V_NAME VARCHAR2(255) :=FULL_NAME;
BEGIN

DBMS_OUTPUT.PUT_LINE(V_NAME);
END PR_new;
END PK_TEST;
/
但是当我编译body时,我得到的错误是:

[Warning] ORA-24344: success with compilation error
14/1    PLS-00201: identifier 'OT.PR_NEW' must be declared
14/1    PL/SQL: Statement ignored
16/12   PLS-00201: identifier 'OT.PRNT_STRNG' must be declared
16/1    PL/SQL: Statement ignored
 (1: 0): Warning: compiled but with compilation errors

为什么会出现此错误?我犯了什么错误?

通常,如果要从同一个包中的不同方法调用包中的方法,则无需限定方法名称。如果你打电话

  PR_new(f_name||L_NAME);
默认为
ot
模式中
pk\u测试
包中的
pr\u new
过程。如果要限定过程名称,可以使用
package.method
schema.package.method
。所以

  pk_test.PR_new(f_name||L_NAME);


这是合法的

通常,如果要从同一包中的不同方法调用包中的方法,则无需限定方法名称。如果你打电话

  PR_new(f_name||L_NAME);
默认为
ot
模式中
pk\u测试
包中的
pr\u new
过程。如果要限定过程名称,可以使用
package.method
schema.package.method
。所以

  pk_test.PR_new(f_name||L_NAME);

这是合法的