L'erreur est signalée à la ligne 11 du corps du package, qui est
RETURN NUMBER;
Le nombre est un type de données, pas un nom de variable. Ce que vous voulez réellement retourner ici n'est pas clair; pendant que vous l'interrogez et le capturez, peut-être LOCATION
; mais comme il s'agit d'une chaîne, le type de retour de la fonction devrait également être une chaîne (c'est-à-dire VARCHAR2
plutôt que NUMBER
). Peut-être :
create or replace PACKAGE BODY e_con_pack
AS
FUNCTION
GET_LOCATION_namel (p_con_id in NUMBER, p_con_name out VARCHAR2)
RETURN VARCHAR2 IS
LOCATION VARCHAR2(30);
BEGIN
SELECT LOCATION INTO LOCATION FROM LDS_CONSULTANT WHERE CONSULTANT_ID = p_con_id;
SELECT CST_NAME INTO p_con_name FROM LDS_CONSULTANT WHERE CONSULTANT_ID = p_con_id;
RETURN LOCATION;
END GET_LOCATION_namel;
Ou encore mieux, utilisez le type de données colonne comme vous l'êtes déjà ailleurs :
create or replace PACKAGE BODY e_con_pack
AS
FUNCTION
GET_LOCATION_namel (p_con_id in NUMBER, p_con_name out VARCHAR2)
RETURN LDS_CONSULTANT.LOCATION%type IS
LOCATION LDS_CONSULTANT.LOCATION%type;
BEGIN
...
Dans tous les cas, vous devrez bien sûr modifier la spécification du package pour qu'elle corresponde.