Felet rapporteras mot rad 11 i paketets kropp, vilket är
RETURN NUMBER;
Number är en datatyp, inte ett variabelnamn. Det är inte klart vad du egentligen vill återvända här; när du frågar och fångar det, kanske LOCATION
; men eftersom det är en sträng, måste returtypen för funktionen också vara en sträng (d.v.s. VARCHAR2
istället för NUMBER
). Kanske:
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;
Eller ännu bättre, använd kolumndatatypen som du redan är någon annanstans:
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
...
Hur som helst måste du naturligtvis ändra paketspecifikationen så att den matchar.