2017-12-14 2 views
0

erwarten Wenn ich F8 in PL/SQL-Entwickler drücken für Package MyPackage Schaffung ich unten Fehlermeldung erhaltenFehler: PLS-00103: Fand das Symbol ")", wenn eine der folgenden

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; 

Unten ist der Code

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; 

Antwort

1

Sie haben mehrere Fehler:

Zuerst nur die Klammer fallen, wie Sie in dem Gehäusekörper tat. Da die Funktion keine Parameter hat, brauchen Sie sie nicht. Zweitens, stellen Sie sicher, dass der Rückgabetyp in der Spezifikation das gleiches ist, dass Sie in dem Körper zu verwenden, in diesem Fall sollten Sie VARCHAR2

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

Last, der Ende Name in dem Gehäusekörper verwenden, sollte das gleiche sein, das Sie in dem verwendeten Spezifikation, dh MyPackage anstelle von MyPackageBody

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; 
Verwandte Themen