2012-04-13 10 views
2

Ich arbeite an einem überladenen Paket und habe mich über zwei Dinge gewundert.Arbeiten mit überladenen Paketwürfen "Fehler beim Auflösen der Objektdetails"

1) Gibt es eine Möglichkeit auf weitere Informationen zu bekommen, was Fehler aufgetreten ist, wie, welche Zeilennummer es trat auf, als Failed to resolve object details etwas vage Nähte.

2) Was scheint mit dieser Aussage falsch zu sein?

CREATE OR REPLACE PACKAGE shop_query_pkg IS 
    procedure shop_info 
     (p_id IN bb_shopper.idshopper%TYPE, 
     p_firstname out bb_shopper.firstname%TYPE); 
     procedure shop_info 
     (p_id IN bb_shopper.lastname%TYPE, 
     p_firstname out bb_shopper.firstname%TYPE); 
    END; 
    /
    CREATE OR REPLACE PACKAGE BODY show_query_pkg IS 
    procedure shop_info 
     (p_id IN bb_shopper.idshopper%TYPE, 
     p_firstname out bb_shopper.firstname%TYPE); 
     IS 
    BEGIN 
     SELECT firstname 
     into p_firstname 
     FROM bb_shopper 
     WHERE idshopper = p_id; 
    EXCEPTION 
     WHEN NO_DATA_FOUND THEN 
     DBMS_OUTPUT.PUT_LINE('ID does not exist'); 
    END; 
    -- second procedure 
    procedure shop_info 
     (p_id IN bb_shopper.lastname%TYPE, 
     p_firstname out bb_shopper.firstname%TYPE); 
     IS 
    BEGIN 
     SELECT firstname 
     into p_firstname 
     FROM bb_shopper 
     WHERE lastname = p_id; 
    EXCEPTION 
     WHEN NO_DATA_FOUND THEN 
     DBMS_OUTPUT.PUT_LINE('Last name does not exist'); 
    END; 
    END; 
    /
    show errors; 

Der Fehler

PACKAGE shop_query_pkg compiled 
PACKAGE BODY show_query_pkg compiled 
Warning: execution completed with warning 
Failed to resolve object details 

Antwort

0

Sie können nicht den gleichen Namen verwenden und die gleiche Anzahl von Parametern des gleichen Typs in der überlasteten Prozedur und dort auch der Gehäusekörper Name ist falsch und andere kleine Fehler sind dort

Zusätzlich die erste und zweite Prozedur der Parameter p_firstname Typen p_firstname aus bb_shopper.firstname% TYPE und bb_shopper.firstname% TYPE sind beide vom Typ Zeichen (entweder beide CHAR oder BEIDE VARCHAR2 etc) und daher nicht als verschiedene Arten zählt

Bitte benutzen Sie die unten

CREATE OR REPLACE PACKAGE shop_query_pkg IS 
     procedure shop_info(p_id1  IN bb_shopper.idshopper%TYPE, 
        p_firstname1 out bb_shopper.firstname%TYPE); 
     procedure shop_info(p_id2  IN bb_shopper.lastname%TYPE, 
        p_firstname2 out bb_shopper.firstname%TYPE); 
END; 
/
CREATE OR REPLACE PACKAGE BODY shop_query_pkg IS 
    procedure shop_info(p_id1 IN bb_shopper.idshopper%TYPE, 
            p_firstname1 out bb_shopper.firstname%TYPE) 
       IS 
     BEGIN 
      SELECT firstname into p_firstname1 FROM bb_shopper WHERE idshopper = p_id1; 
     EXCEPTION 
     WHEN NO_DATA_FOUND 
     THEN 
      DBMS_OUTPUT.PUT_LINE('ID does not exist'); 
     END; -- second procedure  
    procedure shop_info(p_id2 IN bb_shopper.lastname%TYPE, 
            p_firstname2 out bb_shopper.firstname%TYPE) 
       IS 
     BEGIN 
      SELECT firstname into p_firstname2 FROM bb_shopper WHERE lastname = p_id2; 
     EXCEPTION 
     WHEN NO_DATA_FOUND 
     THEN 
      DBMS_OUTPUT.PUT_LINE('Last name does not exist'); 
     END; 
END; 
/
show errors; 
+0

@atrueresistance für Ihre erste Frage können Sie die Ansicht user_errors im selben Schema verwenden, um alle Informationen wie Zeilennummer, Position und Text zu erhalten – psaraj12

+1

Sie können die gleiche Anzahl von Parametern und Namen in überladenen Prozedurdefinitionen verwenden der Typ von mindestens 1 Parameter ist unterschiedlich. – Andrew

+0

Danke Andrew, wird meinen Fehler korrigieren – psaraj12

0

Erstellen Sie ein Paket in anderen Schema von APPS und schaffen keine Synonym in APPS.

Wenn das Paket während des Kompilierens einen Fehler aufweist, wird beim Anzeigen der Fehlermeldung "show error" die Nachricht als "Fehler beim Auflösen der Objektdetails" angezeigt, da das Paket oder Synonym in APPS nicht verfügbar ist Schema.

0

Überprüfen Sie, ob die Paketspezifikation des Pakets, das Sie zu kompilieren versuchen, nicht gültig ist. Ich würde vorschlagen, dass Sie die Paketspezifikation noch einmal kompilieren und dann den Paketkörper kompilieren. Das hat das Problem für mich gelöst.