Oracle
 sql >> Base de données >  >> RDS >> Oracle

Tentative de création d'un package - erreur PLS-00330

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.