Я новичок в 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
Можно ли вызвать функцию из процедуры того же пакета или нет? Кроме того, я могу вызвать функцию другого пакета?