De fout wordt gerapporteerd tegen regel 11 van de pakkettekst, die is
RETURN NUMBER;
Getal is een gegevenstype, geen variabelenaam. Het is niet duidelijk wat je hier eigenlijk wilt teruggeven; terwijl je het opvraagt en vastlegt, misschien LOCATION
; maar aangezien dat een string is, zou het retourtype van de functie ook een string moeten zijn (d.w.z. VARCHAR2
in plaats van NUMBER
). Misschien:
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;
Of nog beter, gebruik het kolomgegevenstype zoals u al elders bent:
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
...
Hoe dan ook, u moet de pakketspecificatie natuurlijk aanpassen zodat deze overeenkomt.