Der Fehler wird in Zeile 11 des Paketkörpers gemeldet, die
ist RETURN NUMBER;
Zahl ist ein Datentyp, kein Variablenname. Es ist nicht klar, was Sie hier eigentlich zurückgeben wollen; während Sie es abfragen und erfassen, vielleicht LOCATION
; Da es sich jedoch um einen String handelt, müsste der Rückgabetyp der Funktion auch ein String sein (d. h. VARCHAR2
statt NUMBER
). Vielleicht:
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;
Oder noch besser, verwenden Sie den Spaltendatentyp, wie Sie es bereits an anderer Stelle tun:
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
...
In beiden Fällen müssen Sie natürlich die Paketspezifikation entsprechend ändern.