2012-04-13 11 views
2

オーバーロードされたパッケージを処理していて、2つのことが不思議でした。オーバーロードされたパッケージの処理 "オブジェクトの詳細の解決に失敗しました"

1)エラーが発生した行の番号のように、Failed to resolve object detailsの縫い目が少し曖昧なため、何が起こったかについての詳細情報を得る方法はありますか?

2)このステートメントで間違っているように見えますか?

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; 

エラー

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

答えて

0

あなたはオーバーロードされた手順 に同じ名前と同じ型のパラメータの同じ番号を使用することはできませんし、また、そこにパッケージ本体の名前が間違っている およびその他の小さなミスですそこに

さらに、第1および第2の手順 パラメータp_firstname型p_firstname out bb_shopper.firstname%TYPEおよびbb_shopper.firstname%TYPEは両方ともタイプの文字(CHAR両方ともまたはVARCHAR2 BOTHなど) 、したがっては、など、さまざまなタイプ

はカウントされません

APPSは異なるスキーマでパッケージを作成し、以下の

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

あなたの最初の質問では、同じスキーマのビューuser_errorsを使用して、行番号、位置、テキストなどのすべての情報を取得することができます – psaraj12

+1

オーバーロードされたプロシージャー定義で同じ数のパラメーターと名前を使用できます。少なくとも1つのパラメータのタイプが異なります。 – Andrew

+0

ありがとうアンドリュー、私の間違いを修正します – psaraj12

0

を使用して、シノニムを作成しないでくださいAPPSで

コンパイル時にパッケージに何らかのエラーが発生している場合は、 'show error'を使用してエラーメッセージを表示しようとすると、パッケージまたは同義語がAPPSで利用できないため、スキーマ

0

コンパイルしようとしているパッケージのパッケージ仕様が有効でないかどうかを確認してください。パッケージ仕様をもう一度コンパイルして、パッケージ本体をコンパイルすることをお勧めします。これは私の問題を解決しました。

関連する問題