2017-12-14 8 views
0

のいずれかを期待したときに、私はパッケージmypackageと作成のためのPL/SQLの開発者にF8キーを押すと、私はエラー以下エラー:PLS-00103:記号が発生しました「)」以下の

Error: PLS-00103: Encountered the symbol ")" when expecting one of the following: 

      <an identifier> <a double-quoted delimited-identifier> 
      current delete exists prior 
Line: 24 
Text: FUNCTION MyFunction() RETURN VARCHAR; 

の下に取得するには、コード

です
CREATE OR REPLACE PACKAGE MyPackage AS 
FUNCTION MyFunction() RETURN VARCHAR; 
END MyPackage; 

CREATE OR REPLACE PACKAGE BODY MyPackage AS 

FUNCTION MyFunction RETURN VARCHAR2 IS 
     l_pram mytable.param_val%TYPE; 
    BEGIN 
     SELECT SomeColumnVal INTO l_pram FROM mytable WHERE SomeColumn = 'SomeValue'; 
     RETURN l_pram; 
END MyFunction; 

END MyPackageBody; 

答えて

1

あなたはいくつかのエラーがあります:

まず、あなたがパッケージ本体で行ったように、単に括弧をドロップします。関数にはパラメータがないので、必要はありません。第二に、仕様で戻り値の型を使用すると、体内で使用するのと同じであることを確認し、この場合には、あなたがVARCHAR2

CREATE OR REPLACE PACKAGE MyPackage AS 
    FUNCTION MyFunction RETURN VARCHAR2; 
END MyPackage; 

最終を使用する必要があり、パッケージ本体内のエンド名は、あなたが使用したのと同じでなければなりません仕様、すなわちMyPackageBodyの代わりにMyPackage

CREATE OR REPLACE PACKAGE BODY MyPackage AS 

    FUNCTION MyFunction RETURN VARCHAR2 IS 
    l_pram mytable.param_val%TYPE; 
    BEGIN 
    SELECT SomeColumnVal INTO l_pram FROM mytable WHERE SomeColumn = 'SomeValue'; 
    RETURN l_pram; 
    END MyFunction; 

END MyPackage; 
関連する問題