DBMS 1
DA, SQL, DB보안 등 실무자를 위한 위한 DB기술 바이블!
UTL_TCP
Tibero System Package Guide
33.1. 개요
33.2. 타입
33.2.1. CONNECTION
33.3. 프로시저와 함수
33.3.1. CLOSE_CONNECTION
33.3.2. GET_LINE
33.3.3. GET_RAW
33.3.4. GET_TEXT
33.3.5. OPEN_CONNECTION
33.3.6. READ_LINE
33.3.7. READ_RAW
33.3.8. READ_TEXT
33.3.9. WRITE_LINE
33.3.10. WRITE_RAW
33.3.11. WRITE_TEXT
UTL_TCP은 TCP/IP 클라이언트 역할을 수행할 수 있는 프로시저 및 함수들을 제공하는 패키지이다.많은 인터넷 환경이 TCP/IP 프로토콜에 기반하므로, 이메일이나 인터넷 연결 등에 유용하게 사용될 수 있다.
본 절에서는 UTL_TCP 패키지에 제공하는 별도 정의된 타입들을 알파벳 순으로 설명한다.
UTL_TCP를 이용한 TCP/IP 연결의 객체 및 연결 정보를 담고 있는 레코드 타입이다.
CONNECTION 타입의 세부 내용은 다음과 같다.
- 프로토타입
TYPE CONNECTION IS RECORD (
pvid PLS_INTEGER,
remote_host VARCHAR2(255),
remote_port PLS_INTEGER,
tx_timeout PLS_INTEGER
);
- 필드
본 절에서는 UTL_TCP 패키지에서 제공하는 프로시저와 함수를 알파벳 순으로 설명한다.
연결 중인 TCP/IP 연결을 끊는 프로시저이다.
CLOSE_CONNECTION 프로시저의 세부 내용은 다음과 같다.
- 프로토타입
UTL_TCP.CLOSE_CONNECTION (c IN OUT NOCOPY connection)
- 파라미터
- 예제
DECLARE
c UTL_TCP.CONNECTION;
BEGIN
c := UTL_TCP.OPEN_CONNECTION('localhost', 25);
UTL_TCP.CLOSE_CONNECTION(c);
END;
원격 TCP 서버로부터 받은 문자열 한 줄을 가져오는 함수이다. 자세한 내용은 동일한 기능을 수행하는 READ_LINE 함수의 설명을 참고한다.
GET_LINE 함수의 세부 내용은 다음과 같다.
- 프로토타입
UTL_TCP.GET_LINE (
c IN OUT NOCOPY connection,
remove_crlf IN BOOLEAN DEFAULT FALSE,
peek IN BOOLEAN DEFAULT FALSE
)
RETURN VARCHAR2
- 파라미터
- 반환값읽어들인 문자열이다.
- 예제
DECLARE
c UTL_TCP.CONNECTION;
data VARCHAR2(100);
BEGIN
c := UTL_TCP.OPEN_CONNECTION('localhost', 80);
data := UTL_TCP.GET_LINE(c);
END;
원격 TCP 서버로부터 받은 바이너리 데이터를 가져오는 함수이다. 자세한 내용은 동일한 기능을 수행하는 READ_RAW 함수의 설명을 참고한다.
GET_RAW 함수의 세부 내용은 다음과 같다.
- 프로토타입
UTL_TCP.GET_RAW (
c IN OUT NOCOPY connection,
len IN PLS_INTEGER DEFAULT 1,
peek IN BOOLEAN DEFAULT FALSE)
RETURN RAW
- 파라미터
- 반환값읽어들인 바이너리 데이터이다.
- 예제
DECLARE
c UTL_TCP.CONNECTION;
data RAW(100);
BEGIN
c := UTL_TCP.OPEN_CONNECTION('localhost', 80);
data := UTL_TCP.GET_RAW(c, 10); -- 10바이트의 문자열을 읽어올 것을 요청
END;
원격 TCP 서버로부터 받은 문자열을 가져오는 함수이다. 자세한 내용은 동일한 기능을 수행하는 READ_TEXT 함수의 설명을 참고한다.
GET_TEXT 함수의 세부 내용은 다음과 같다.
- 프로토타입
UTL_TCP.GET_TEXT (
c IN OUT NOCOPY connection,
len IN PLS_INTEGER DEFAULT 1,
peek IN BOOLEAN DEFAULT FALSE)
RETURN VARCHAR2
- 파라미터
- 반환값읽어들인 문자열.
- 예제
DECLARE
c UTL_TCP.CONNECTION;
data VARCHAR2(100);
BEGIN
c := UTL_TCP.OPEN_CONNECTION('localhost', 80);
data := UTL_TCP.GET_TEXT(c, 10); -- 10바이트의 문자열을 읽어올 것을 요청
END;
외부 TCP 서버로의 TCP/IP 연결을 맺는 프로시저이다.
OPEN_CONNECTION 프로시저의 세부 내용은 다음과 같다.
- 프로토타입
UTL_TCP.OPEN_CONNECTION (
remote_host IN VARCHAR2,
remote_port IN PLS_INTEGER,
tx_timeout IN PLS_INTEGER DEFAULT NULL)
RETURN UTL_TCP.CONNECTION
- 파라미터
- 반환값TCP/IP 연결 정보를 갖는 UTL_TCP.CONNECTION 타입의 객체
- 예제
DECLARE
c UTL_TCP.CONNECTION;
BEGIN
c := UTL_TCP.OPEN_CONNECTION('localhost', 25);
END;
원격 TCP 서버로부터 받은 문자열 한 줄을 가져오는 함수이다.타임아웃이 설정된 경우, 타임아웃 시간까지 기다렸다가 만료되었을 때 TRANSFER_TIMEOUT 예외를 발생시킨다. 타임아웃이 NULL일 경우에는 무한정 기다리므로 주의하여 사용하도록 한다.
READ_LINE 함수의 세부 내용은 다음과 같다.
- 프로토타입
UTL_TCP.READ_LINE (
c IN OUT NOCOPY connection,
data IN OUT NOCOPY VARCHAR2,
remove_crlf IN BOOLEAN DEFAULT FALSE,
peek IN BOOLEAN DEFAULT FALSE
)
RETURN PLS_INTEGER
- 파라미터
- 반환값읽어들인 문자열의 문자 갯수이다.
- 예제
DECLARE
c UTL_TCP.CONNECTION;
data VARCHAR2(100);
len PLS_INTEGER;
BEGIN
c := UTL_TCP.OPEN_CONNECTION('localhost', 80);
len := UTL_TCP.READ_LINE(c, data);
END;
원격 TCP 서버로부터 받은 바이너리 데이터를 가져오는 함수이다.타임아웃이 설정된 경우, 타임아웃 시간까지 기다렸다가 만료되었을 경우 TRANSFER_TIMEOUT 예외를 발생시킨다. 타임아웃이 NULL일 경우에는 무한정 기다리므로 주의하여 사용하도록 한다.
READ_RAW 함수의 세부 내용은 다음과 같다.
- 프로토타입
UTL_TCP.READ_RAW (
c IN OUT NOCOPY connection,
data IN OUT NOCOPY RAW,
len IN PLS_INTEGER DEFAULT 1,
peek IN BOOLEAN DEFAULT FALSE)
RETURN PLS_INTEGER
- 파라미터
- 반환값읽어들인 데이터의 바이트 갯수이다.
- 예제
DECLARE
c UTL_TCP.CONNECTION;
data RAW(100);
len PLS_INTEGER;
BEGIN
c := UTL_TCP.OPEN_CONNECTION('localhost', 80);
len := UTL_TCP.READ_RAW(c, data, 10);
END;
원격 TCP 서버로부터 받은 문자열을 가져오는 함수이다.타임아웃이 설정된 경우, 타임아웃 시간까지 기다렸다가 만료되었을 시 TRANSFER_TIMEOUT 예외를 발생시킨다. 타임아웃이 NULL일 경우에는 무한정 기다리므로 주의하여 사용하도록 한다.
READ_TEXT 함수의 세부 내용은 다음과 같다.
- 프로토타입
UTL_TCP.READ_TEXT (
c IN OUT NOCOPY connection,
data IN OUT NOCOPY VARCHAR2,
len IN PLS_INTEGER DEFAULT 1,
peek IN BOOLEAN DEFAULT FALSE)
RETURN PLS_INTEGER
- 파라미터
- 반환값읽어들인 데이터의 Byte 갯수이다.
- 예제
DECLARE
c UTL_TCP.CONNECTION;
data VARCHAR2(100);
len PLS_INTEGER;
BEGIN
c := UTL_TCP.OPEN_CONNECTION('localhost', 80);
len := UTL_TCP.READ_TEXT(c, data, 10);
END;
원격 TCP 서버로 한줄의 문자열을 전송하는 함수이다. 입력문자열 뒤에 새줄 문자열이 붙어서 전송된다.
WRITE_LINE 함수의 세부 내용은 다음과 같다.
- 프로토타입
UTL_TCP.WRITE_LINE (
c IN OUT NOCOPY connection,
data IN VARCHAR2 DEFAULT NULL)
RETURN PLS_INTEGER
- 파라미터
- 반환값실제 전송된 데이터의 문자열 갯수이다.
- 예제
DECLARE
c UTL_TCP.CONNECTION;
rc INTEGER;
BEGIN
c := UTL_TCP.OPEN_CONNECTION('localhost', 80);
rc := UTL_TCP.WRITE_LINE(c, 'GET / HTTP/1.0');
END;
원격 TCP 서버로 바이너리 형태의 데이터를 보내는 함수이다.
WRITE_RAW 함수의 세부 내용은 다음과 같다.
- 프로토타입
UTL_TCP.WRITE_RAW (
c IN OUT NOCOPY connection,
data IN RAW,
len IN PLS_INTEGER DEFAULT NULL)
RETURN PLS_INTEGER
- 파라미터
- 반환값실제 전송된 데이터의 바이트 수이다.
- 예제
DECLARE
c UTL_TCP.CONNECTION;
rc INTEGER;
BEGIN
c := UTL_TCP.OPEN_CONNECTION('localhost', 80);
rc := UTL_TCP.WRITE_RAW(c, '0D0A'); -- 0d 0a의 hex값을 가진 바이너리 데이터 전송
END;
원격 TCP 서버로 문자열 형태의 데이터를 보내는 함수이다.
WRITE_TEXT 함수의 세부 내용은 다음과 같다.
- 프로토타입
UTL_TCP.WRITE_TEXT (
c IN OUT NOCOPY connection,
data IN VARCHAR2,
len IN PLS_INTEGER DEFAULT NULL)
RETURN PLS_INTEGER
- 파라미터
- 반환값실제 전송된 문자열의 문자 갯수이다.
- 예제
DECLARE
c UTL_TCP.CONNECTION;
rc INTEGER;
BEGIN
c := UTL_TCP.OPEN_CONNECTION('localhost', 8080);
rc := UTL_TCP.WRITE_TEXT(c, 'TIBEROTMAX', 6); -- TIBEROTMAX 문자열 중
TIBERO 문자열만 전송한다.
END;