programing

create oracle package funched PLS-00103: 기호 "CREATE"를 발견했습니다.

sourcejob 2023. 6. 23. 22:03
반응형

create oracle package funched PLS-00103: 기호 "CREATE"를 발견했습니다.

Oracle sql developer를 사용하여 Oracle 패키지를 작성하고 있습니다. 다음 컴파일 오류가 발생했습니다.

오류(7,1): PLS-00103: 기호 "CREATE"를 발견했습니다.

create or replace
PACKAGE TestPackage AS 
 FUNCTION beforePopulate RETURN BOOLEAN;
 FUNCTION afterPopulate RETURN BOOLEAN;
END TestPackage;

CREATE OR REPLACE PACKAGE BODY TestPackage AS
   FUNCTION beforePopulate RETURN BOOLEAN AS
   BEGIN
      DELETE FROM TEST_1;
      INSERT INTO TEST_1
      SELECT * FROM TEST WHERE VALUE=300;
      COMMIT;
      RETURN TRUE;
     EXCEPTION
       WHEN OTHERS THEN
        RETURN FALSE;
   END;
   FUNCTION afterPopulate RETURN BOOLEAN AS
     BEGIN
         UPDATE TEST SET RESULT="completed" WHERE VALUE=300;
            COMMIT;
         RETURN TRUE;
         EXCEPTION
           WHEN OTHERS RETURN FALSE;
        END;
  END;
END TestPackage;

추가할 경우/6행에서 오류는 다음과 같습니다.

오류(6,1): PLS-00103: 기호 "/"이(가) 발생했습니다.

나는 다음과 같은 빈 구현을 지쳤습니다.

create or replace 
package package1 as 
END PACKAGE1;

CREATE OR REPLACE 
package body package1 as 
end package1;

저도 같은 실수를 했어요.

BEGIN, END 등이 있으면 SQL이 아닌 PL/SQL에 있습니다.

PL/SQL 블록은 줄의 맨 처음에 슬래시 하나("앞으로")로 끝나야 합니다.이렇게 하면 Oracle이 PL/SQL 블록을 완료했으므로 해당 텍스트 블록을 컴파일할 수 있습니다.

SQL 쿼리 - 세미콜론으로 끝납니다.

update orders set status = 'COMPLETE' where order_id = 55255;

PL/SQL 블록 - 세미콜론으로 구분된 명령, 블록은 순방향 슬래시로 종료됩니다.

create or replace procedure mark_order_complete (completed_order_id in number)
is
begin
     update orders set status = 'COMPLETE' where order_id = :completed_order_id;
end mark_order_complete;
/

Oracle SQL Developer를 사용하면 다음과 같은 이점을 얻을 수 있습니다.

create or replace PACKAGE TestPackage AS
FUNCTION beforePopulate 
 RETURN BOOLEAN;  
FUNCTION afterPopulate 
 RETURN BOOLEAN;
END TestPackage;
/
CREATE OR REPLACE PACKAGE BODY TestPackage AS    
 FUNCTION beforePopulate 
  RETURN BOOLEAN  AS    
 BEGIN       
  DELETE FROM TESTE;      
  INSERT INTO TESTE       
  SELECT 1,1,1 FROM DUAL; 
  COMMIT;     
  RETURN TRUE;  
 EXCEPTION    
  WHEN OTHERS THEN   
   RETURN FALSE;   
 END;
 FUNCTION afterPopulate 
  RETURN BOOLEAN  AS  
 BEGIN
  UPDATE TESTE SET TESTE='OK' WHERE TESTE='';
  COMMIT;       
  RETURN TRUE;  
 EXCEPTION       
  WHEN OTHERS THEN RETURN FALSE;    
 END; 
END TestPackage;
/   

사용할 테이블과 열을 실제로 만들 때까지 실행할 수 없었습니다.

몇 시간의 좌절 끝에 저는 이 일을 해낼 수 있었습니다.저도 당신과 똑같은 문제가 있었습니다.

저의 해결책은 패키지 코드가 아닌 스크립트로 실행하는 것이었습니다.슬래시는 SQL 워크시트에서 올바르게 작동합니다.차액을 첨부합니다, 도움이 되길 바랍니다!

enter image description here

저도 같은 문제가 있었습니다.왼쪽 메인 메뉴를 사용하여 패키지를 만들고 패키지 선언과 본문을 동일한 .sql 파일 안에 넣습니다.모든 코드를 복사하여 새 워크시트에 붙여넣고 end package_name 뒤에 "/"(패키지 선언과 본문 뒤 모두)를 넣은 다음 워크시트를 스크립트로 실행하면 문제가 해결됩니다.

F5를 사용하여 패키지 및 패키지 본문을 별도로 실행합니다.

이 문제가 있었습니다(오류(6),: PLS-00103: sqdeveloper의 모든 db 패키지 코드(프로시저 헤더와 구현 모두)를 user/packages/MY_PACKage_NAME/MY_PACKage_BODY에 복사할 때 헤더를 user/packages/MY_PACKage_NAME에 복사하지 않고 "/" 기호를 만났습니다.사용자/패키지/MY_PACKAGE_NAME/MY_PACKAGE_BODY로 이동합니다.

언급URL : https://stackoverflow.com/questions/9231788/create-oracle-package-encountered-pls-00103-encountered-the-symbol-create

반응형