DBMS 1

DA, SQL, DB보안 등 실무자를 위한 위한 DB기술 바이블!

UTL_TCP

DBMS 1
Tibero 가이드
Tibero System Package Guide
UTL_TCP
작성자
dataonair
작성일
2021-02-18 10:45
조회
1458



제33장UTL_TCP




내용 목차






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





33.1. 개요




UTL_TCP은 TCP/IP 클라이언트 역할을 수행할 수 있는 프로시저 및 함수들을 제공하는 패키지이다.많은 인터넷 환경이 TCP/IP 프로토콜에 기반하므로, 이메일이나 인터넷 연결 등에 유용하게 사용될 수 있다.




33.2. 타입




본 절에서는 UTL_TCP 패키지에 제공하는 별도 정의된 타입들을 알파벳 순으로 설명한다.




33.2.1. CONNECTION




UTL_TCP를 이용한 TCP/IP 연결의 객체 및 연결 정보를 담고 있는 레코드 타입이다.

CONNECTION 타입의 세부 내용은 다음과 같다.

  • 프로토타입
    TYPE CONNECTION IS RECORD (
    pvid PLS_INTEGER,
    remote_host VARCHAR2(255),
    remote_port PLS_INTEGER,
    tx_timeout PLS_INTEGER
    );
  • 필드

    필드 이름 설명
    pvid TCP/IP의 연결 객체를 지칭하는 ID로 변경하지 않도록 한다.
    remote_host 연결된 TCP 서버의 주소이다.
    remote_port 연결된 TCP 서버의 포트 번호이다.
    tx_timeout TCP 통신을 이용한 읽기/쓰기의 시간 제한으로, 제한 시간이 지나면 타임아웃 에러와 함께 반환한다. (단위: 초 )NULL이면 응답이 올때까지 기다리고, 0이면 전송 후 대기 없이 즉시 빠져나온다.






33.3. 프로시저와 함수




본 절에서는 UTL_TCP 패키지에서 제공하는 프로시저와 함수를 알파벳 순으로 설명한다.




33.3.1. CLOSE_CONNECTION




연결 중인 TCP/IP 연결을 끊는 프로시저이다.

CLOSE_CONNECTION 프로시저의 세부 내용은 다음과 같다.

  • 프로토타입
    UTL_TCP.CLOSE_CONNECTION (c IN OUT NOCOPY connection)
  • 파라미터

    파라미터 설명
    c 기존에 연결된 연결 객체이다. 타입은 UTL_TCP.CONNECTION이다.
  • 예제
    DECLARE
    c UTL_TCP.CONNECTION;
    BEGIN
    c := UTL_TCP.OPEN_CONNECTION('localhost', 25);
    UTL_TCP.CLOSE_CONNECTION(c);
    END;





33.3.2. GET_LINE




원격 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
  • 파라미터

    파라미터 설명
    c 기존에 연결된 연결 객체이다. 타입은 UTL_TCP.CONNECTION이다.
    remove_crlf TRUE일 경우 문자열에 포함된 CR/LF 문자열을 제거하여 반환한다.
    peek TRUE일 경우 TCP input queue로부터 읽어온 데이터를 비우지 않고 보존하여 이후 다시 읽어올 경우 같은 데이터를 읽게 된다.
  • 반환값읽어들인 문자열이다.
  • 예제
    DECLARE
    c UTL_TCP.CONNECTION;
    data VARCHAR2(100);
    BEGIN
    c := UTL_TCP.OPEN_CONNECTION('localhost', 80);
    data := UTL_TCP.GET_LINE(c);
    END;





33.3.3. GET_RAW




원격 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
  • 파라미터

    파라미터 설명
    c 기존에 연결된 연결 객체이다. 타입은 UTL_TCP.CONNECTION이다.
    len 읽어올 바이너리 데이터의 바이트 갯수이다. (기본값: 1)
    peek TRUE일 경우 TCP input queue로부터 읽어온 데이터를 비우지 않고 보존하여 이후 다시 읽어올 경우 같은 데이터를 읽게 된다.
  • 반환값읽어들인 바이너리 데이터이다.
  • 예제
    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;





33.3.4. GET_TEXT




원격 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
  • 파라미터

    파라미터 설명
    c 기존에 연결된 연결 객체이다. 타입은 UTL_TCP.CONNECTION이다.
    len 읽어올 문자열의 바이트 갯수이다. (기본값: 1)
    peek TRUE일 경우 TCP input queue로부터 읽어온 데이터를 비우지 않고 보존하여 이후 다시 읽어올 경우 같은 데이터를 읽게 된다.
  • 반환값읽어들인 문자열.
  • 예제
    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;





33.3.5. OPEN_CONNECTION




외부 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
  • 파라미터

    파라미터 설명
    remote_host 연결할 TCP 서버의 주소 이름이다. NULL이면 localhost로 자동 설정된다.
    remote_port 연결할 TCP 서버의 포트 번호이다.
    tx_timeout TCP 통신을 이용한 읽기/쓰기의 시간 제한으로, 제한 시간이 지나면 타임아웃 에러와 함께 반환한다. (단위: 초 )NULL이면 응답이 올때까지 기다리고, 0이면 전송 후 대기 없이 즉시 빠져나온다.
  • 반환값TCP/IP 연결 정보를 갖는 UTL_TCP.CONNECTION 타입의 객체
  • 예제
    DECLARE
    c UTL_TCP.CONNECTION;
    BEGIN
    c := UTL_TCP.OPEN_CONNECTION('localhost', 25);
    END;





33.3.6. READ_LINE




원격 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
  • 파라미터

    파라미터 설명
    c 기존에 연결된 연결 객체이다. 타입은 UTL_TCP.CONNECTION이다.
    data 읽어들인 문자열이다.
    remove_crlf TRUE일 경우 문자열에 포함된 CR/LF 문자열을 제거하여 반환한다.
    peek TRUE일 경우 TCP input queue로부터 읽어온 데이터를 비우지 않고 보존하여 이후 다시 읽어올 경우 같은 데이터를 읽게 된다.
  • 반환값읽어들인 문자열의 문자 갯수이다.
  • 예제
    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;





33.3.7. READ_RAW




원격 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
  • 파라미터

    파라미터 설명
    c 기존에 연결된 연결 객체이다. 타입은 UTL_TCP.CONNECTION이다.
    data 읽어들인 문자열이다.
    len 읽어올 바이너리 데이터의 바이트 갯수이다.
    peek TRUE일 경우 TCP input queue로부터 읽어온 데이터를 비우지 않고 보존하여 이후 다시 읽어올 경우 같은 데이터를 읽게 된다.
  • 반환값읽어들인 데이터의 바이트 갯수이다.
  • 예제
    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;





33.3.8. READ_TEXT




원격 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
  • 파라미터

    파라미터 설명
    c 기존에 연결된 연결 객체이다. 타입은 UTL_TCP.CONNECTION이다.
    data 읽어들인 문자열이다.
    len 읽어올 문자열의 문자 갯수이다.
    peek TRUE일 경우 TCP input queue로부터 읽어온 데이터를 비우지 않고 보존하여 이후 다시 읽어올 경우 같은 데이터를 읽게 된다.
  • 반환값읽어들인 데이터의 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;





33.3.9. WRITE_LINE




원격 TCP 서버로 한줄의 문자열을 전송하는 함수이다. 입력문자열 뒤에 새줄 문자열이 붙어서 전송된다.

WRITE_LINE 함수의 세부 내용은 다음과 같다.

  • 프로토타입
    UTL_TCP.WRITE_LINE (
    c IN OUT NOCOPY connection,
    data IN VARCHAR2 DEFAULT NULL)
    RETURN PLS_INTEGER
  • 파라미터

    파라미터 설명
    c 기존에 연결된 연결 객체이다. 타입은 UTL_TCP.CONNECTION이다.
    data 전송할 문자열이다.
  • 반환값실제 전송된 데이터의 문자열 갯수이다.
  • 예제
    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;





33.3.10. WRITE_RAW




원격 TCP 서버로 바이너리 형태의 데이터를 보내는 함수이다.

WRITE_RAW 함수의 세부 내용은 다음과 같다.

  • 프로토타입
    UTL_TCP.WRITE_RAW (
    c IN OUT NOCOPY connection,
    data IN RAW,
    len IN PLS_INTEGER DEFAULT NULL)
    RETURN PLS_INTEGER
  • 파라미터

    파라미터 설명
    c 기존에 연결된 연결 객체이다. 타입은 UTL_TCP.CONNECTION이다.
    data 전송할 바이너리 데이터이다.
    len 전송할 바이너리 데이터의 바이트 수이다. NULL이면 데이터 전체를 전송한다.
  • 반환값실제 전송된 데이터의 바이트 수이다.
  • 예제
    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;





33.3.11. WRITE_TEXT




원격 TCP 서버로 문자열 형태의 데이터를 보내는 함수이다.

WRITE_TEXT 함수의 세부 내용은 다음과 같다.

  • 프로토타입
    UTL_TCP.WRITE_TEXT (
    c IN OUT NOCOPY connection,
    data IN VARCHAR2,
    len IN PLS_INTEGER DEFAULT NULL)
    RETURN PLS_INTEGER
  • 파라미터

    파라미터 설명
    c 기존에 연결된 연결 객체이다. 타입은 UTL_TCP.CONNECTION이다.
    data 전송할 문자열 데이터이다.
    len 전송할 문자열의 문자 갯수로 NULL이면 문자열 전체를 전송한다.
  • 반환값실제 전송된 문자열의 문자 갯수이다.
  • 예제
    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;