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
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
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
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
------
0NEW_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
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
------
0PUT_LINE Procedure
주어진 expression으로 만들어진 메시지에 마지막 개행 문자를 추가하여 버퍼에 저장한다.
Procedure Definition
PROCEDURE PUT_LINE( item IN VARCHAR(4000) )
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
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() MessageDBMS_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
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 TESTDBMS_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
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: