2017-12-14 20 views
0

중 하나를 예상 할 때 나는 오류 아래오류 : PLS-00103 :가 발생 상징 ")"나는 패키지 myPackage에 생성을위한 PL/SQL 개발자에 F8을 누르면 다음

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;