Грешката се докладва срещу ред 11 на тялото на пакета, което е
RETURN NUMBER;
Number е тип данни, а не име на променлива. Не е ясно какво всъщност искате да върнете тук; докато правите заявки и го улавяте, може би LOCATION
; но тъй като това е низ, типът връщане на функцията също трябва да бъде низ (т.е. VARCHAR2
вместо NUMBER
). Може би:
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;
Или още по-добре, използвайте типа данни на колоната, както вече сте другаде:
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
...
И в двата случая ще трябва да промените спецификацията на пакета, за да съответства, разбира се.