Built-in Package

DBMS_LOCK Package

실행

DBMS_LOCK Package를 사용하기 위해서는 다음과 같이 DBMS_LOCK.sql을 실행해야 한다.
% gsql sys gliese --as sysdba --import $GOLDILOCKS_HOME/admin/packages/DBMS_LOCK.sql

Package Routines

SLEEP Procedure

지정된 시간 동안 세션을 일시 중지하는 Procedure이다.

Procedure Definition

PROCEDURE SLEEP( seconds IN NATIVE_INTEGER )

Parameters

SLEEP Procedure Parameters

Parameter

설명

seconds

세션을 일시 중단하는 시간 (초)이다.

seconds 값은 0 이상이어야 한다.

사용 예

gSQL> DECLARE
  V1 VARCHAR(20);
BEGIN
  SELECT TO_CHAR( SYSTIME, 'HH24:MI:SS' ) INTO V1 FROM DUAL;
  DBMS_OUTPUT.PUT_LINE( 'CURRENT TIME = ' || V1 );
  DBMS_LOCK.SLEEP( 3 );
  DBMS_OUTPUT.PUT_LINE( 'DBMS_LOCK.SLEEP( 3 ) ');
  SELECT TO_CHAR( SYSTIME, 'HH24:MI:SS' ) INTO V1 FROM DUAL;
  DBMS_OUTPUT.PUT_LINE( 'CURRENT TIME = ' || V1 );
END;
/
CURRENT TIME = 11:53:09
DBMS_LOCK.SLEEP( 3 ) 
CURRENT TIME = 11:53:12
Anonymous PL block executed.

DBMS_OUTPUT Package

실행

DBMS_OUTPUT Package를 사용하기 위해서는 다음과 같이 DBMS_OUTPUT.sql을 실행해야 한다.
% gsql sys gliese --as sysdba --import $GOLDILOCKS_HOME/admin/packages/DBMS_OUTPUT.sql

Package Routines

DISABLE Procedure

메시지 로깅 기능을 비활성화 한다.
기존에 로깅된 모든 메시지는 버려진다.

Procedure Definition

PROCEDURE DISABLE

사용 예

gSQL> BEGIN
  DBMS_OUTPUT.DISABLE;
  DBMS_OUTPUT.PUT_LINE( 'DBMS_OUTPUT() Message' );
END;
/
Anonymous PL block executed.

ENABLE Procedure

주어진 버퍼 크기로 메시지 로깅 기능을 활성화하는 Procedure이다.
기존에 활성화 되어 있으면 모든 메시지를 버리고 새로 버퍼를 생성한다.

Procedure Definition

PROCEDURE ENABLE( buffer_size IN NATIVE_INTEGER := 20000 )

Parameters

ENABLE Procedure Parameters

Parameter

설명

buffer_size

버퍼 크기를 나타내며 기본 크기는 20000 바이트이다.

buffer_size를 명시하지 않거나 NULL이면 buffer 크기는 20000 바이트이다.

사용 예

gSQL> BEGIN
  DBMS_OUTPUT.ENABLE;  
  DBMS_OUTPUT.PUT_LINE( 'DBMS_OUTPUT() Message' );
END;
/
DBMS_OUTPUT() Message
Anonymous PL block executed.

GET_LINE Procedure

버퍼에 저장된 메시지들 중에 아직 읽지 않은 가장 오래된 메시지 라인 한 줄을 반환한다.

Procedure Definition

PROCEDURE GET_LINE( line OUT VARCHAR(4000),
                    status OUT NATIVE_INTEGER )

Parameters

GET_LINE Procedure Parameters

Parameter

설명

line

개행 문자를 제외한 1줄을 buffer에서 읽어 반환한다.

status

메시지를 존재하면 0을 반환하고, 없으면 1을 반환한다.

사용 예

gSQL> var msg VARCHAR(100);
gSQL> var status INTEGER;
gSQL> BEGIN
  DBMS_OUTPUT.PUT_LINE( 'DBMS_OUTPUT() Message' );
  DBMS_OUTPUT.GET_LINE( :msg, :status );
END;
/
Anonymous PL block executed.

gSQL> \print msg

MSG                   
----------------------
DBMS_OUTPUT() Message

gSQL> \print status

STATUS
------
     0

NEW_LINE Procedure

개행 문자를 버퍼에 저장한다.

Procedure Definition

PROCEDURE NEW_LINE

사용 예

gSQL> BEGIN
  DBMS_OUTPUT.PUT( 'DBMS_OUTPUT()' );
  DBMS_OUTPUT.PUT( ' Message' );
  DBMS_OUTPUT.NEW_LINE;
END;
/
DBMS_OUTPUT() Message
Anonymous PL block executed.

PUT Procedure

주어진 expression으로 만들어진 메시지를 버퍼에 저장한다.

Procedure Definition

PROCEDURE PUT( item IN VARCHAR(4000) )

Parameters

PUT Procedure Parameters

Parameter

설명

item

개행 문자 없이 buffer에 저장할 expression 이다.

사용 예

gSQL> var msg VARCHAR(100);
gSQL> var status INTEGER;
gSQL> BEGIN
  DBMS_OUTPUT.PUT( 'DBMS_OUTPUT()' );
  DBMS_OUTPUT.PUT( ' Message' );
  DBMS_OUTPUT.NEW_LINE;
  DBMS_OUTPUT.GET_LINE( :msg, :status );
END;
/
Anonymous PL block executed.

gSQL> \print msg

MSG                  
---------------------
DBMS_OUTPUT() Message

gSQL> \print status

STATUS
------
     0

PUT_LINE Procedure

주어진 expression으로 만들어진 메시지에 마지막 개행 문자를 추가하여 버퍼에 저장한다.

Procedure Definition

PROCEDURE PUT_LINE( item IN VARCHAR(4000) )

Parameters

PUT_LINE Procedure Parameters

Parameter

설명

item

개행 문자를 포함하여 buffer에 저장할 expression 이다.

사용 예

gSQL> BEGIN
  DBMS_OUTPUT.PUT_LINE( 'DBMS_OUTPUT()' );
  DBMS_OUTPUT.PUT_LINE( ' Message' );
END;
/
DBMS_OUTPUT()
 Message
Anonymous PL block executed.

SET_LOG Procedure

메시지를 로깅할 때 주어진 경로에 있는 파일에도 동시에 출력한다.

Procedure Definition

PROCEDURE SET_LOG( file_path IN VARCHAR(4000), 
                   permission IN NATIVE_INTEGER := 600 )

Parameters

SET_LOG Procedure Parameters

Parameter

설명

file_path

메시지를 로깅할 파일의 경로이다.

파일의 경로가 상대 경로이면 <SYSTEM_LOGGER_DIR> 프로퍼티에 해당하는 디렉토리 아래에서 대상 파일을 찾는다.

permission

기본 권한은 600이다.

file의 권한을 지정한다.

사용 예

gSQL> BEGIN
   DBMS_OUTPUT.SET_LOG('output.log', 600);
   DBMS_OUTPUT.PUT_LINE( 'DBMS_OUTPUT() Message' );
END;
/
DBMS_OUTPUT() Message
Anonymous PL block executed.

gSQL> !cat $GOLDILOCKS_DATA/trc/output.log
DBMS_OUTPUT() Message

DBMS_SQL Package

실행

DBMS_SQL Package를 사용하기 위해서는 다음과 같이 DBMS_SQL.sql을 실행해야 한다.
% gsql sys gliese --as sysdba --import $GOLDILOCKS_HOME/admin/packages/DBMS_SQL.sql

Package Routines

RETURN_RESULT Procedure

ref cursor를 통해 실행된 질의 결과를 클라이언트 어플리케이션에 반환한다.

Procedure Definition

PROCEDURE RETURN_RESULT( rc IN SYS_REFCURSOR )

Parameters

RETURN_RESULT Procedure Parameters

Parameter

설명

rc

질의 결과를 위한 reference cursor 이다.

사용 예

gSQL> DECLARE
  rc1 SYS_REFCURSOR;
BEGIN
  OPEN rc1 FOR SELECT SESSION_ID(), SESSION_SERIAL(), SESSION_USER() FROM DUAL;
  DBMS_SQL.RETURN_RESULT( rc1 );
END;
/ 
Anonymous PL block executed.

ResultSet #1

SESSION_ID() SESSION_SERIAL() SESSION_USER()
------------ ---------------- --------------
          31               13 TEST

DBMS_STANDARD Package

실행

DBMS_STANDARD Package를 사용하기 위해서는 다음과 같이 DBMS_STANDARD.sql을 실행해야 한다.
% gsql sys gliese --as sysdba --import $GOLDILOCKS_HOME/admin/packages/DBMS_STANDARD.sql

Package Routines

RAISE_APPLICATION_ERROR Procedure

임의의 사용자 exception을 발생시킨다.

Procedure Definition

PROCEDURE RAISE_APPLICATION_ERROR( error_code    IN NATIVE_INTEGER,
                                   error_message IN VARCHAR(4000),
                                   stack_flag    IN BOOLEAN := FALSE )

Parameters

RAISE_APPLICATION_ERROR Procedure Parameters

Parameter

설명

error_code

사용자가 지정한 임의의 에러 코드이다.

-20000 ~ -20999 사이의 값만 허용한다.

error_message

사용자가 지정한 에러 코드에 해당하는 에러 메시지이다.

stack_flag

기본값은 FALSE이다.

parameter가 TRUE이면 기존 에러 스택에 에러를 쌓고, FALSE이면 기존의 에러를 대체한다.

사용 예

gSQL> DECLARE
  V1 INTEGER;
BEGIN
  V1 := 100/0;
EXCEPTION
  WHEN OTHERS THEN
    RAISE_APPLICATION_ERROR (-20000, 'custom error message', TRUE);
END;
/
ERR-2F000(20000): custom error message
ERR-22012(12122): divisor is equal to zero : 
  V1 := 100/0;
        *
ERROR at line 4: