2014-11-20 3 views
0

다음은 컴파일하려고하는 저장 프로 시저의 일부 논리입니다. 줄 바꿈이 없으면 잘 컴파일됩니다. 그러나, 내가 그것을 깨면 그것은 컴파일되지 않을 것이다. 왜 그런가요?줄 바꿈이있을 때 내 PL/SQL 절차가 컴파일되지 않는 이유는 무엇입니까?

코드는 바로 작동 할 때 :

DECLARE 
curr_fy varchar2(4); 
last_fy varchar2(4); 
get_month number; 
BEGIN 
get_month := to_number(to_char(sysdate, 'MM')); 
If get_month < 6 then 
curr_fy := to_char(sysdate, 'YYYY'); 
last_fy := to_char(sysdate, 'YYYY') - 1; 
END IF; 
If get_month > 5 then 
curr_fy := to_char(sysdate, 'YYYY') + 1; 
last_fy := to_char(sysdate, 'YYYY'); 
END IF; 
dbms_output.put_line(curr_fy); 
END; 

가 잘 작동하지 않는 코드 :

DECLARE 

curr_fy varchar2(4); 
last_fy varchar2(4); 
get_month number; 

BEGIN 

get_month := to_number(to_char(sysdate, 'MM')); 

If get_month < 6 then 
curr_fy := to_char(sysdate, 'YYYY'); 
last_fy := to_char(sysdate, 'YYYY') - 1; 
END IF; 

If get_month > 5 then 
curr_fy := to_char(sysdate, 'YYYY') + 1; 
last_fy := to_char(sysdate, 'YYYY'); 
END IF; 

dbms_output.put_line(curr_fy); 

END; 

나는의 두 번째 버전을 컴파일 할 때 다음과 같은 오류 메시지가 무엇입니까 코드 : ORA-00900 : 잘못된 SQL 문

TOAD의 최신 버전을 사용하고 있습니다.

+1

두 가지 예가 SQL Developer에서 컴파일되므로 Toad와 관련이 있다고 상상해보십시오. –

+0

PL/SQL Developer에서도 컴파일되고 올바르게 실행됩니다. Toad에서 실행할 때 발생하는 오류와 관련된 정보를 포함하여 질문을 수정하십시오. 감사. –

+1

TOAD는 SQL * Plus처럼 작동 할 수 있습니다. 빈 줄은 명령문을 종료합니다. –

답변

2

나는 TOAD를 사용하지 않았지만, TOAD는 각 행과 별도의 SQL 문으로 공백 행을 처리한다고 추측합니다. 따라서 TOAD가 DECLARE을 잘못된 SQL 문으로 실행하려했을 수도 있습니다.

제 제안은 마우스 커서를 사용하여 전체 익명 블록을 선택/강조 표시 한 다음 실행 버튼을 클릭하는 것입니다. 이것은 일반적으로 SQL Developer와 같은 무료 도구에서 작동합니다.

+0

이것은 효과가 있습니다! 감사! –