본문 바로가기

DB/Oracle

코멘트, PL/SQL 블록


행 코멘트
   연속한 2개의 하이픈('--') 이후는 그 행의 끝까지 코멘트(주석)화 된다.
블록 코멘트
  slash, asterisk('/*')과 asterisk, slash('*/') 로 둘러싸인 블록은 comment out 된다.
-- 행 코멘트의 예
  ;
  ....
 
 /* 블록 코멘트의 예
  블록 코멘트
 ....
 */
 ;
 ...
Tips
     
PL/SQL 스토아드 서브 프로그램으로 블록 코멘트를 사용하면, 에러 발생시 메세지에 출력되는 에러행의 위치가
       올바른 행 번호가 되지 않는다. 이것은 블록 코멘트의 행 만큼 어긋나는 것인데 블록 코멘트가 컴파일시에 삭제되고
       있기 때문이라고 생각된다.
       그러나 행 코멘트의 경우에, 차이가 발생하지 않는다. PL/SQL의 개발에는 블록 코멘트보다 행 코멘트만 사용하는
       것이 좋다.
PL/SQL 블록 
     최소의 블록 구문
       아무것도 하지 않는 익명 블록
BEGIN
	-- NULL = NOP ... NO OPERATION 
	NULL;
END;
/
       변수를 선언하는 블록 
      스토어드 서브 프로그램과 같이 서버에 프로그램을 실행하지 않고 변수를 사용하는 경우 SQLPlus로 실행할 수 있다.
DECLARE
	vNum	NUMBER(2);
BEGIN
	vNum := 1 ;
	DBMS_OUTPUT.PUT_LINE('수치=' || vNum);
END;

이 프로그램을 SQL*Plus로 실행하는 경우에는,
SET SERVEROUTPUT ON 
 


이라고하는 DBMS_OUTPUT의 출력 명령을 디스플레이에 표시시키는 설정을 사전에 해 두지 않으면 결과가 표시되지 않는다.

보충
위의 예를 스토아드 프로시져로 하고 싶은 경우에는, 아래와 같이
DECLARE를 CREATE PROCEDURE DISP_NUMBER IS 로 변경한다.
CREATE PROCEDURE DISP_NUMBER
IS
	vNum	NUMBER(2);
BEGIN
	vNum := 1 ;
	DBMS_OUTPUT.PUT_LINE('수치=' || vNum);
END;

이것을 호출하려면
CALL DISP_NUMBER() ;
또는,
EXECUTE DISP_NUMBER

과 같이 실행한다. CALL 명령은 Oracle 9i 이후

다음은 Call 과 Execute 의 차이에 대해서.