【发布时间】:2020-02-07 12:08:18
【问题描述】:
我是 oracle 新手。我创建了一个包含规范和正文的包。
它的标题是:
CREATE OR REPLACE PACKAGE OT.PK_TEST IS
FUNCTION PRNT_STRNG RETURN VARCHAR2;
PROCEDURE PR_SUPERHERO(F_NAME VARCHAR2,L_NAME VARCHAR2);
END PK_TEST;
/
它的主体是:
CREATE OR REPLACE PACKAGE BODY OT.PK_TEST IS
FUNCTION PRNT_STRNG
RETURN VARCHAR2
IS
BEGIN
RETURN 'ASHWIN';
END PRNT_STRNG;
PROCEDURE PR_SUPERHERO(F_NAME VARCHAR2,L_NAME VARCHAR2)
IS
BEGIN
OT.PK_TEST.PRNT_STRNG;
DBMS_OUTPUT.PUT_LINE(F_NAME);
DBMS_OUTPUT.PUT_LINE(L_NAME);
END PR_SUPERHERO;
END PK_TEST;
/
我想测试是否可以从程序体中调用该函数。所以,我补充说:
OT.PK_TEST.PRNT_STRNG;
调用返回varchar的函数。但是,我得到了错误:
[Warning] ORA-24344: success with compilation error
11/1 PLS-00221: 'PRNT_STRNG' is not a procedure or is undefined
11/1 PL/SQL: Statement ignored
(1: 0): Warning: compiled but with compilation errors
我可以从同一个包的过程中调用函数吗?另外,我可以调用不同包的函数吗?
【问题讨论】:
标签: database oracle plsql oracle11g