2

私はオーバーロードされたパッケージに取り組んでいて、2つのことを考えていました。

Failed to resolve object details1)継ぎ目が少しあいまいなため、発生した行番号など、発生したエラーに関する詳細情報を取得する方法はありますか?

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 
4

3 に答える 3

0

オーバーロードされたプロシージャで同じ名前と同じタイプのパラメータを使用することはできません。また、パッケージ本体の名前が間違っていて、他の小さな間違いがあります。

さらに、最初と2番目のプロシージャパラメータp_firstnameタイプp_firstname out bb_shopper.firstname%TYPEとbb_shopper.firstname%TYPEは両方ともタイプCharacters(BOTHCHARまたはBOTHVARCHAR2など)であるため、異なるタイプとしてカウントされません。

以下をご利用ください

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;
于 2012-04-13T03:13:50.827 に答える
0

APPSとは異なるスキーマでパッケージを作成し、APPSで同義語を作成しないでください。

コンパイル中にパッケージでエラーが発生した場合、「show error」を使用してエラーメッセージを表示しようとすると、APPSスキーマでパッケージまたはシノニムが使用できないため、「Failed toresolveobjectdetails」というメッセージが表示されます。

于 2015-07-30T08:56:33.170 に答える
0

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

于 2015-12-09T22:10:28.593 に答える