Zobacz zmianę poniżej, wywołanie title_crud
nie ma zmiennej do przechowywania tego, co jest przez nią zwracane (p_err)
PROCEDURE create_title(
P_TITLE varchar2,
P_USER varchar2,
P_ERR OUT VARCHAR2
)
IS
BEGIN
IF P_TITLE IS NULL THEN
P_ERR := 'Null value';
ELSE
title_crud('I',NULL,P_TITLE,P_USER,P_ERR); -- Extra Parameter
END IF;
END;
PROCEDURE title_crud(
P_OP_TYPE VARCHAR2,
P_ID number,
P_TITLE varchar2,
P_USER varchar2,
P_ERR OUT VARCHAR2
)...
Łatwy błąd do popełnienia, ale uważam, że łatwiej jest tego uniknąć podczas wywoływania procedury, w której parametry przekazujesz za pomocą notacji nazwanej. Twoje wezwanie do title_crud staje się
...
title_crud(P_OP_TYPE => 'I',
P_ID => NULL,
P_TITLE => P_TITLE,
P_USER => P_USER,
P_ERR => P_ERR);
...