내용 목차
본 장에서는 UTL_RAW 패키지의 기본 개념과 패키지 내의 함수를 사용하는 방법을 설명한다.
UTL_RAW는 RAW 타입의 데이터와 관련된 여러 가지 함수를 제공하는 패키지이다.
SQL 문장 내에서 CHAR 또는 VARCHAR 타입의 데이터에 사용할 수 있는 함수는 RAW 타입의 데이터에는 사용할 수 없다. 또한, RAW 타입과 CHAR, VARCHAR 타입 간에는 데이터 변환을 할 수 없다. 이러한 문제를 해결하기 위해 UTL_RAW 내에 정의된 함수를 사용한다. 그러면 CHAR, VARCHAR 타입의 데이터에 사용할 수 있는 함수의 기능을 RAW 타입의 데이터에도 사용할 수 있다.
본 절에서는 UTL_RAW 패키지에서 제공하는 함수를 알파벳 순으로 설명한다.
주어진 두 바이너리 데이터에 AND 연산을 수행하여 반환하는 함수이다. 이 두 데이터의 길이가 다르면, 짧은 쪽 데이터의 길이만큼 연산을 수행한 결과에 긴 쪽에 남아있는 부분의 데이터를 첨가한다. 따라서 반환되는 최종 결과 데이터는 긴 쪽의 데이터와 길이가 같다.
프로토타입
UTL_RAW.BIT_AND ( r1 IN RAW, r2 IN RAW ) RETURN RAW;
파라미터
파라미터 | 설명 |
---|---|
r1 | 피연산자이다. |
r2 | 피연산자이다. |
반환값
반환값 | 설명 |
---|---|
RAW | r1과 r2의 AND 연산 결과를 반환한다. |
NULL | r1과 r2 중 하나라도 NULL인 경우에 반환한다. |
예제
BEGIN DBMS_OUTPUT.PUT_LINE(UTL_RAW.BIT_AND('abc', '012')); END; / 0010 PSM completed SQL>
주어진 바이너리 데이터에 대한 1의 보수를 반환하는 함수이다.
BIT_COMPLEMENT 함수의 세부 내용은 다음과 같다.
프로토타입
UTL_RAW.BIT_COMPLEMENT ( r IN RAW ) RETURN RAW;
파라미터
파라미터 | 설명 |
---|---|
r | 피연산자이다. |
반환값
반환값 | 설명 |
---|---|
RAW | r의 COMPLEMENT 연산 결과를 반환한다. |
NULL | r가 NULL인 경우에 반환한다. |
예제
BEGIN DBMS_OUTPUT.PUT_LINE(UTL_RAW.BIT_COMPLEMENT('456')); END; / FBA9 PSM completed SQL>
주어진 두 바이너리 데이터에 대한 OR 연산을 수행하여 반환하는 함수이다. 두 데이터의 길이가 다르면, 짧은 쪽 데이터의 길이만큼 연산을 수행한 결과에 긴 쪽의 남아있는 부분의 데이터를 첨가한다. 반환되는 최종 결과 데이터는 긴 쪽의 데이터와 길이가 같다.
프로토타입
UTL_RAW.BIT_OR ( r1 IN RAW, r2 IN RAW ) RETURN RAW;
파라미터
파라미터 | 설명 |
---|---|
r1 | 피연산자이다. |
r2 | 피연산자이다. |
반환값
반환값 | 설명 |
---|---|
RAW | r1과 r2의 OR 연산 결과를 반환한다. |
NULL | r1과 r2 중 하나라도 NULL인 경우에 반환한다. |
예제
BEGIN DBMS_OUTPUT.PUT_LINE(UTL_RAW.BIT_OR('123', '456')); END; / 0577 PSM completed SQL>
주어진 두 바이너리 데이터에 대한 XOR 연산을 수행하여 반환하는 함수이다. 두 데이터의 길이가 다르면, 짧은 쪽 데이터의 길이만큼 연산을 수행한 결과에 긴 쪽의 남아있는 부분의 데이터를 첨가한다. 따라서 반환되는 최종 결과 데이터는 긴 쪽의 데이터와 길이가 같다.
프로토타입
UTL_RAW.BIT_XOR ( r1 IN RAW, r2 IN RAW ) RETURN RAW;
파라미터
파라미터 | 설명 |
---|---|
r1 | 피연산자이다. |
r2 | 피연산자이다. |
반환값
반환값 | 설명 |
---|---|
RAW | r1과 r2의 XOR 연산 결과를 반환한다. |
NULL | r1과 r2 중 하나라도 NULL인 경우에 반환한다. |
예제
BEGIN DBMS_OUTPUT.PUT_LINE(UTL_RAW.BIT_XOR('123', '456')); END; / 0575 PSM completed SQL>
주어진 BINARY_DOUBLE 타입의 값을 RAW 타입의 데이터로 변환하여 반환하는 함수이다. 반환된 데이터는 8bytes의 길이를 가지며, 지정된 endian에 따라 Byte 순서가 결정된다.
파라미터로 주어진 endianess의 값은 RAW 타입의 데이터가 저장되는 endian을 뜻한다. 즉, 시스템이 little-endian이고, 파라미터가 big-endian인 경우 RAW 타입의 데이터에는 입력 값 n의 Byte 순서와 반대되는 순서로 Byte 값이 저장된다. 파라미터가 little-endian이라면 시스템의 Byte 순서와 동일한 순서로 Byte 값이 저장된다.
CAST_FROM_BINARY_DOUBLE 함수의 세부 내용은 다음과 같다.
프로토타입
UTL_RAW.CAST_FROM_BINARY_DOUBLE ( n IN BINARY_DOUBLE, endianess IN PLS_INTEGER DEFAULT 1 ) RETURN RAW;
파라미터
파라미터 | 설명 |
---|---|
n | 변환할 BINARY_DOUBLE 값이다. |
endianess | 변환할 endian이다. 1(big-endian) 또는 2(little-endian) 중 하나이다. |
반환값
반환값 | 설명 |
---|---|
RAW | BINARY_DOUBLE 타입의 값의 바이너리 표현을 반환한다. |
NULL | 입력 값이 NULL인 경우에 반환한다. |
예외 상황
예외 상황 | 설명 |
---|---|
INVALID_ENDIAN | endian의 값이 1이나 2가 아닌 경우이다. |
예제
BEGIN DBMS_OUTPUT.PUT_LINE(UTL_RAW.CAST_FROM_BINARY_DOUBLE(1.5d)); END; / 3FF8000000000000 PSM completed SQL>
주어진 BINARY_FLOAT 타입의 값을 RAW 타입의 데이터로 변환하여 반환하는 함수이다. 반환된 데이터는 4bytes의 길이를 가지며, 지정된 endian에 따라 Byte 순서가 결정된다.
파라미터로 주어진 endianess의 값은 RAW 타입의 데이터가 저장되는 endian을 뜻한다. 즉, 시스템이 little-endian이고, 파라미터가 big-endian인 경우 RAW 타입의 데이터에는 입력 값 n의 Byte 순서와 반대되는 순서로 Byte 값이 저장된다. 파라미터가 little-endian이라면 시스템의 Byte 순서와 동일한 순서로 Byte 값이 저장된다.
CAST_FROM_BINARY_FLOAT 함수의 세부 내용은 다음과 같다.
프로토타입
UTL_RAW.CAST_FROM_BINARY_FLOAT ( n IN BINARY_FLOAT, endianess IN PLS_INTEGER DEFAULT 1 ) RETURN RAW;
파라미터
파라미터 | 설명 |
---|---|
n | 변환할 BINARY_FLOAT 값이다. |
endianess | 변환할 endian이다. 1(big-endian) 또는 2(little-endian) 중 하나이다. |
반환값
반환값 | 설명 |
---|---|
RAW | BINARY_FLOAT 타입의 값의 바이너리 표현을 반환한다. |
NULL | 입력 값이 NULL인 경우에 반환한다. |
예외 상황
예외 상황 | 설명 |
---|---|
INVALID_ENDIAN | endian의 값이 1이나 2가 아닌 경우이다. |
예제
BEGIN DBMS_OUTPUT.PUT_LINE(UTL_RAW.CAST_FROM_BINARY_FLOAT(1.5f)); END; / 3FC00000 PSM completed SQL>
주어진 BINARY_INTEGER 타입의 값을 RAW 타입의 데이터로 변환하여 반환하는 함수이다. 반환된 데이터는 4bytes의 길이를 가지며, 지정된 endian에 따라 Byte 순서가 결정된다.
파라미터로 주어진 endianess의 값은 RAW 타입의 데이터가 저장되는 endian을 뜻한다. 즉, 시스템이 little-endian이고, 파라미터가 big-endian인 경우 RAW 타입의 데이터에는 입력 값 n의 Byte 순서와 반대되는 순서로 Byte 값이 저장된다. 파라미터가 little-endian이라면 시스템의 Byte 순서와 동일한 순서로 Byte 값이 저장된다.
CAST_FROM_BINARY_INTEGER 함수의 세부 내용은 다음과 같다.
프로토타입
UTL_RAW.CAST_FROM_BINARY_INTEGER ( n IN BINARY_INTEGER, endianess IN PLS_INTEGER DEFAULT 1 ) RETURN RAW;
파라미터
파라미터 | 설명 |
---|---|
n | 변환할 BINARY_INTEGER 값이다. |
endianess | 변환할 endian이다. 1(big-endian) 또는 2(little-endian) 중 하나이다. |
반환값
반환값 | 설명 |
---|---|
RAW | BINARY_INTEGER 타입의 값의 바이너리 표현을 반환한다. |
NULL | 입력 값이 NULL인 경우에 반환한다. |
예외 상황
예외 상황 | 설명 |
---|---|
INVALID_ENDIAN | endian의 값이 1이나 2가 아닌 경우이다. |
예제
BEGIN DBMS_OUTPUT.PUT_LINE(UTL_RAW.CAST_FROM_BINARY_INTEGER(10)); END; / 0000000A PSM completed SQL>
주어진 NUMBER 타입 값을 RAW 타입의 데이터로 변환하여 반환하는 함수이다. 반환된 바이너리 데이터는 입력된 값에 대한 Tibero의 내부 표현이며, 반환된 데이터의 길이는 입력 값에 따라 가변 길이를 가진다.
파라미터로 주어진 endianess의 값은 RAW 타입의 데이터가 저장되는 endian을 뜻한다. 즉, 시스템이 little-endian이고, 파라미터가 big-endian인 경우 RAW 타입의 데이터에는 입력 값 n의 Byte 순서와 반대되는 순서로 Byte 값이 저장된다. 파라미터가 little-endian이라면 시스템의 Byte 순서와 동일한 순서로 Byte 값이 저장된다.
CAST_FROM_NUMBER 함수의 세부 내용은 다음과 같다.
프로토타입
UTL_RAW.CAST_FROM_NUMBER ( n IN NUMBER ) RETURN RAW;
파라미터
파라미터 | 설명 |
---|---|
n | 변환할 숫자형 값이다. |
반환값
반환값 | 설명 |
---|---|
RAW | 숫자형 값의 바이너리 표현을 반환한다. |
NULL | 입력 값이 NULL인 경우에 반환한다. |
예외 상황
예외 상황 | 설명 |
---|---|
INVALID_ENDIAN | endian의 값이 1이나 2가 아닌 경우이다. |
예제
BEGIN DBMS_OUTPUT.PUT_LINE(UTL_RAW.CAST_FROM_NUMBER(1.5)); END; / 03C181B2 PSM completed SQL>
주어진 RAW 타입의 데이터를 BINARY_DOUBLE 타입의 값으로 변환하여 반환하는 함수이다. 입력되는 바이너리 데이터는 8bytes의 길이를 가진다.
CAST_TO_BINARY_DOUBLE 함수의 세부 내용은 다음과 같다.
프로토타입
UTL_RAW.CAST_TO_BINARY_DOUBLE ( r IN RAW, endianess IN PLS_INTEGER DEFAULT 1 ) RETURN BINARY_DOUBLE;
파라미터
파라미터 | 설명 |
---|---|
r | 변환할 바이너리 데이터이다. |
endianess | 바이너리 데이터의 endian이다. 1(big-endian) 또는 2(little-endian) 중 하나이다. |
반환값
반환값 | 설명 |
---|---|
BINARY_DOUBLE | RAW 타입의 데이터를 BINARY_DOUBLE 타입의 값으로 변환한 값을 반환한다. |
NULL | 입력 값이 NULL인 경우에 반환한다. |
예외 상황
예외 상황 | 설명 |
---|---|
INVALID_ENDIAN | endian의 값이 1이나 2가 아닌 경우이다. |
예제
DECLARE bin raw(100); BEGIN bin := UTL_RAW.CAST_FROM_BINARY_DOUBLE(1.5d); DBMS_OUTPUT.PUT_LINE(UTL_RAW.CAST_TO_BINARY_DOUBLE(bin)); END; / 1.5E+00 PSM completed SQL>
주어진 RAW 타입의 데이터를 BINARY_FLOAT 타입의 값으로 변환하여 반환하는 함수이다. 입력되는 바이너리 데이터는 4bytes의 길이를 가진다.
CAST_TO_BINARY_FLOAT 함수의 세부 내용은 다음과 같다.
프로토타입
UTL_RAW.CAST_TO_BINARY_FLOAT ( r IN RAW, endianess IN PLS_INTEGER DEFAULT 1 ) RETURN BINARY_FLOAT;
파라미터
파라미터 | 설명 |
---|---|
r | 변환할 바이너리 데이터이다. |
endianess | 바이너리 데이터의 endian이다. 1(big-endian) 또는 2(little-endian) 중 하나이다. |
반환값
반환값 | 설명 |
---|---|
BINARY_FLOAT | RAW 타입의 데이터를 BINARY_FLOAT 타입의 값으로 변환한 값을 반환한다. |
NULL | 입력 값이 NULL인 경우에 반환한다. |
예외 상황
예외 상황 | 설명 |
---|---|
INVALID_ENDIAN | endian의 값이 1이나 2가 아닌 경우이다. |
예제
DECLARE bin raw(100); BEGIN bin := UTL_RAW.CAST_FROM_BINARY_FLOAT(1.5f); DBMS_OUTPUT.PUT_LINE(UTL_RAW.CAST_TO_BINARY_FLOAT(bin)); END; / 1.5E+00 PSM completed SQL>
주어진 RAW 타입의 데이터를 BINARY_INTEGER 타입의 값으로 변환하여 반환하는 함수이다. 입력되는 바이너리 데이터는 4bytes의 길이를 가진다.
CAST_TO_BINARY_INTEGER 함수의 세부 내용은 다음과 같다.
프로토타입
UTL_RAW.CAST_TO_BINARY_INTEGER ( r IN RAW, endianess IN PLS_INTEGER DEFAULT 1 ) RETURN BINARY_INTEGER;
파라미터
파라미터 | 설명 |
---|---|
r | 변환할 바이너리 데이터이다. |
endianess | 바이너리 데이터의 endian이다. 1(big-endian) 또는 2(little-endian) 중 하나이다. |
반환값
반환값 | 설명 |
---|---|
BINARY_INTEGER | RAW 타입의 데이터를 BINARY_INTEGER 타입의 값으로 변환한 값을 반환한다. |
NULL | 입력 값이 NULL인 경우에 반환한다. |
예외 상황
예외 상황 | 설명 |
---|---|
INVALID_ENDIAN | endian의 값이 1이나 2가 아닌 경우이다. |
예제
DECLARE bin raw(100); BEGIN bin := UTL_RAW.CAST_FROM_BINARY_INTEGER(777); DBMS_OUTPUT.PUT_LINE(UTL_RAW.CAST_TO_BINARY_INTEGER(bin)); END; / 777 PSM completed SQL>
주어진 RAW 타입의 데이터를 NUMBER 타입 값으로 변환하여 반환하는 함수이다. 입력되는 바이너리 데이터는 NUMBER 타입 값에 대한 Tibero의 내부 표현이며 가변 길이를 갖는다.
CAST_TO_NUMBER 함수의 세부 내용은 다음과 같다.
프로토타입
UTL_RAW.CAST_TO_NUMBER ( r IN RAW ) RETURN NUMBER;
파라미터
파라미터 | 설명 |
---|---|
r | 변환할 바이너리 데이터이다. |
반환값
반환값 | 설명 |
---|---|
NUMBER | RAW 타입의 데이터를 NUMBER 타입 값으로 변환한 값을 반환한다. |
NULL | 입력 값이 NULL인 경우에 반환한다. |
예외 상황
예외 상황 | 설명 |
---|---|
INVALID_ENDIAN | endian의 값이 1이나 2가 아닌 경우이다. |
예제
DECLARE bin raw(100); BEGIN bin := UTL_RAW.CAST_FROM_NUMBER(1004); DBMS_OUTPUT.PUT_LINE(UTL_RAW.CAST_TO_NUMBER(bin)); END; / 1004 PSM completed SQL>
주어진 VARCHAR 타입의 문자열을 RAW 타입의 데이터로 변환하여 반환하는 함수이다. 입력되는 문자열은 RAW 타입의 데이터의 문자열 표현이다.
CAST_TO_RAW 함수의 세부 내용은 다음과 같다.
프로토타입
UTL_RAW.CAST_TO_RAW ( c IN VARCHAR2 ) RETURN RAW;
파라미터
파라미터 | 설명 |
---|---|
c | 변환할 문자열이다. |
반환값
반환값 | 설명 |
---|---|
RAW | VARCHAR2의 바이너리 표현을 반환한다. |
NULL | 입력 값이 NULL인 경우에 반환한다. |
예제
BEGIN DBMS_OUTPUT.PUT_LINE(UTL_RAW.CAST_TO_RAW('0a3bcf')); END; / 306133626366 PSM completed SQL>
주어진 RAW 타입의 데이터를 VARCHAR2 타입의 문자열로 변환하여 반환하는 함수이다. 출력되는 문자열은 바이너리 데이터의 문자열 표현이다.
CAST_TO_VARCHAR2 함수의 세부 내용은 다음과 같다.
프로토타입
UTL_RAW.CAST_TO_VARCHAR2 ( r IN RAW ) RETURN VARCHAR2;
파라미터
파라미터 | 설명 |
---|---|
r | 변환할 바이너리 데이터이다. |
반환값
반환값 | 설명 |
---|---|
VARCHAR2 | RAW 타입의 데이터를 VARCHAR2 타입으로 변환한 값을 반환한다. |
NULL | 입력 값이 NULL인 경우에 반환한다. |
예제
DECLARE bin RAW(100); BEGIN bin := UTL_RAW.CAST_TO_RAW('Nanobase'); DBMS_OUTPUT.PUT_LINE(UTL_RAW.CAST_TO_VARCHAR2(bin)); END; / Nanobase PSM completed SQL>
주어진 두 개의 RAW 타입의 데이터를 비교하는 함수이다. 두 바이너리 데이터가 서로 다른 길이를 갖는다면, 짧은 쪽의 데이터에 파라미터 패드(pad)에 저장된 Byte를 첨부하여 같은 길이를 갖도록 한다.
프로토타입
UTL_RAW.COMPARE ( r1 IN RAW, r2 IN RAW, pad IN RAW DEFAULT NULL ) RETURN INTEGER;
파라미터
파라미터 | 설명 |
---|---|
r1 | 비교할 첫 번째 피연산자이다. |
r2 | 비교할 두 번째 피연산자이다. |
pad | 짧은 쪽에 첨부할 Byte이다. NULL이면 ‘00’을 첨부한다. |
반환값
반환값 | 설명 |
---|---|
0 | r1과 r2가 모두 NULL이거나 길이가 완전히 같을 경우에 반환한다. |
N >= 1 | r1과 r2가 다른 경우 서로 다른 Byte 값을 갖는 위치를 반환한다. |
예제
DECLARE x RAW(20) := UTL_RAW.CAST_TO_RAW('ABCDEF'); y RAW(20) := UTL_RAW.CAST_TO_RAW('ABCDFF'); BEGIN DBMS_OUTPUT.PUT_LINE(UTL_RAW.COMPARE(x, y)); END; / 5 PSM completed SQL>
주어진 RAW 타입의 데이터를 결합하여 반환하는 함수이다. 이 함수는 1~12개까지의 입력 파라미터를 가질 수 있다. 결합된 바이너리 데이터는 최대 32767bytes 길이를 가질 수 있으며, 이 길이를 초과하면 ERROR_EXP_CONCAT_TOO_LONG 에러를 발생한다.
프로토타입
UTL_RAW.CONCAT ( r1 IN RAW, r2 IN RAW, r3 IN RAW, r4 IN RAW, r5 IN RAW, r6 IN RAW, r7 IN RAW, r8 IN RAW, r9 IN RAW, r10 IN RAW, r11 IN RAW, r12 IN RAW ) RETURN RAW;
파라미터
파라미터 | 설명 |
---|---|
r1, ..., r12 | 결합할 바이너리 데이터이다. 12개까지 설정이 가능하다. |
반환값
반환값 | 설명 |
---|---|
RAW | 입력 값이 차례로 결합된 RAW를 반환한다. |
NULL | 입력 값이 모두 NULL인 경우에 반환한다. |
예제
DECLARE x RAW(100) := UTL_RAW.CAST_TO_RAW('Give me liberty'); y RAW(100) := UTL_RAW.CAST_TO_RAW(', or give me death'); z RAW(200); BEGIN z := UTL_RAW.CONCAT(x, y); DBMS_OUTPUT.PUT_LINE(UTL_RAW.CAST_TO_VARCHAR2(z)); END; / Give me liberty, or give me death PSM completed SQL>
주어진 RAW 타입의 데이터를 n번 반복하여 결합한 바이너리 데이터를 반환하는 함수이다. 반환되는 데이터의 길이는 최대 32767bytes 이내이어야 하며, 이 길이를 초과하면 예외 상황이 발생한다.
프로토타입
UTL_RAW.COPIES ( r IN RAW, n IN NUMBER ) RETURN RAW;
파라미터
파라미터 | 설명 |
---|---|
r | 반복할 바이너리 데이터이다. |
n | 반복 횟수이다. |
예외 상황
예외 상황 | 설명 |
---|---|
VALUE_ERROR |
|
예제
DECLARE x VARCHAR2(100); y RAW(200); z RAW(200); BEGIN x := 'Books are ships which pass '; x := x || 'through the vast seas of time'; y := UTL_RAW.CAST_TO_RAW(x); z := UTL_RAW.COPIES(y, 1); DBMS_OUTPUT.PUT_LINE(UTL_RAW.CAST_TO_VARCHAR2(z)); END; / Books are ships which pass through the vast seas of time PSM completed SQL>
주어진 RAW 타입의 데이터의 Byte 길이를 반환하는 함수이다.
프로토타입
UTL_RAW.LENGTH ( r IN RAW ) RETURN INTEGER;
파라미터
파라미터 | 설명 |
---|---|
r | 길이 반환의 대상이 되는 바이너리 데이터이다. |
반환값
반환값 | 설명 |
---|---|
NUMBER | 데이터의 길이를 반환한다. |
NULL | 입력 값이 NULL인 경우에 반환한다. |
예제
DECLARE x RAW(20) := UTL_RAW.CAST_TO_RAW('Out of mind'); BEGIN DBMS_OUTPUT.PUT_LINE(UTL_RAW.LENGTH(x)); END; / 11 PSM completed SQL>
RAW 타입의 원본 데이터를 RAW 타입의 대상 데이터에 복사하는 함수이다. 대상 데이터 내에 파라미터 pos가 가리키는 위치로부터 파라미터 len으로 지정한 길이만큼 원본 데이터를 복사한다.
원본 데이터의 길이가 len보다 짧다면 파라미터 패드에 저장된 Byte로 채운다. 대상 데이터의 길이가 pos보다 작다면 pos 위치에까지 pad byte로 채운 다음 연속하여 원본 데이터가 복사된다.
이 함수는 대상 데이터에 원본 데이터를 복사한 데이터를 반환하며, 대상 데이터 자체는 갱신되지 않는다. 반환되는 바이너리 데이터의 최대 길이는 32767Byte이다.
프로토타입
UTL_RAW.OVERLAY ( overlay_str IN RAW, target IN RAW, pos IN BINARY_INTEGER DEFAULT 1, len IN BINARY_INTEGER DEFAULT NULL, pad IN RAW DEFAULT NULL ) RETURN RAW;
파라미터
파라미터 | 설명 |
---|---|
overlay_str | 원본 바이너리 데이터이다. |
target | 대상 바이너리 데이터이다. |
pos | 대상 데이터 내의 위치로, 1이상의 값을 가져야 한다. |
len | 복사할 원본 데이터의 길이로, 0이상의 값을 가져야 한다. NULL이면 원본 데이터 전체를 복사한다. |
pad | 첨부할 Byte이다. NULL이면 ‘00’을 첨부한다. |
예외 상황
예외 상황 | 설명 |
---|---|
VALUE_ERROR |
|
예제
DECLARE bin RAW(100); BEGIN bin := UTL_RAW.OVERLAY('ee', 'fabcdff', 2, 3, '12'); DBMS_OUTPUT.PUT_LINE(bin); END; / 0FEE1212 PSM completed SQL>
주어진 RAW 타입의 데이터의 Byte 순서를 역으로 변환하여 반환하는 함수이다. 반환되는 바이너리 데이터의 길이는 입력된 바이너리 데이터의 길이와 같다.
프로토타입
UTL_RAW.REVERSE ( data IN RAW ) RETURN RAW;
파라미터
파라미터 | 설명 |
---|---|
data | 역으로 변환할 바이너리 데이터이다. |
예외 상황
예외 상황 | 설명 |
---|---|
VALUE_ERROR | 입력된 데이터가 NULL이거나 길이가 0인 경우이다. |
예제
BEGIN DBMS_OUTPUT.PUT_LINE(UTL_RAW.REVERSE('abcd132')); END; / 32D1BC0A PSM completed SQL>
주어진 RAW 타입의 데이터의 일부 또는 전체를 반환하는 함수이다. 입력된 데이터 내에서 파라미터 pos가 가리키는 위치로부터 파라미터 len이 지정한 길이만큼 반환한다. 바이너리 데이터가 NULL이면 결과 값으로 NULL을 반환한다.
프로토타입
UTL_RAW.SUBSTR ( data IN RAW, pos IN BINARY_INTEGER, len IN BINARY_INTEGER DEFAULT NULL ) RETURN RAW;
파라미터
파라미터 | 설명 |
---|---|
data | 바이너리 데이터이다. |
pos | 바이너리 데이터 내의 오프셋 위치이다.
|
len | 반환할 데이터의 길이이다. NULL이면 pos 위치로부터 바이너리 데이터의 끝까지 반환한다. |
예외 상황
예외 상황 | 설명 |
---|---|
VALUE_ERROR | 파라미터 pos가 0이거나 파라미터 len이 1보다 작은 경우이다. |
예제
BEGIN DBMS_OUTPUT.PUT_LINE(UTL_RAW.SUBSTR('abc1234', 2, 2)); END; / BC12 PSM completed SQL>
주어진 RAW 타입의 데이터 내의 지정된 Byte를 변환하는 함수이다. 주어진 바이너리 데이터 내에 from_set에 포함된 Byte가 존재하면 해당 Byte는 to_set 내의 같은 위치에 포함된 대응되는 Byte로 대체된다. to_set의 길이가 작아서 같은 위치에 대응되는 Byte가 없다면 빈 Byte로 대체된다.
이 함수는 변환된 데이터를 반환하며, 입력된 바이너리 데이터 자체는 갱신되지 않는다.
프로토타입
UTL_RAW.TRANSLATE ( data IN RAW, from_set IN RAW, to_set IN RAW ) RETURN RAW;
파라미터
파라미터 | 설명 |
---|---|
data | 바이너리 데이터이다. |
from_set | 변환할 Byte 집합이다. |
to_set | 변환 후의 Byte 집합이다. |
예외 상황
예외 상황 | 설명 |
---|---|
VALUE_ERROR | 파라미터 from_set 또는 to_set이 NULL이거나 길이가 0인 경우이다. |
예제
BEGIN DBMS_OUTPUT.PUT_LINE(UTL_RAW.TRANSLATE('abcde', 'bc', '77')); END; / 0A77DE PSM completed SQL>
주어진 RAW 타입의 데이터 내의 지정된 Byte를 변환하는 함수이다. 주어진 바이너리 데이터 내에 from_set에 포함된 Byte가 존재하면 해당 Byte는 to_set 내의 같은 위치에 포함된 대응되는 Byte로 대체된다. to_set의 길이가 작아서 같은 위치에 대응되는 Byte가 없다면 패드 값으로 대체된다.
이 함수는 변환된 데이터를 반환하며, 입력된 바이너리 데이터 자체는 갱신되지 않는다.
TRANSLITERATE 함수의 세부 내용은 다음과 같다.
프로토타입
UTL_RAW.TRANSLITERATE ( data IN RAW, to_set IN RAW DEFAULT NULL, from_set IN RAW DEFAULT NULL, pad IN RAW DEFAULT NULL ) RETURN RAW;
파라미터
파라미터 | 설명 |
---|---|
data | 바이너리 데이터이다. |
to_set | 변환 후의 Byte 집합이다. |
from_set | 변환할 Byte 집합이다. |
pad | to_set의 길이가 from_set의 길이보다 짧을 때 사용될 1byte RAW이다. pad로 입력된 값은 길이에 관계없이 1byte만 사용하게 된다. |
예외 상황
예외 상황 | 설명 |
---|---|
VALUE_ERROR | data가 NULL이거나 길이가 0인 경우 |
예제
DECLARE bin RAW(100); BEGIN bin := UTL_RAW.TRANSLITERATE('abcde', 'cd', 'bcde'); DBMS_OUTPUT.PUT_LINE(bin); END; / 0ACD00 PSM completed SQL>
주어진 start_byte RAW 데이터부터 end_byte RAW 데이터까지 1byte씩 증가시켜 나열한 결과를 반환하는 함수이다. start_byte가 end_byte보다 더 크다면 start_byte에서 시작해서 0xFF까지 증가시킨 후 0x00부터 다시 증가시켜 end_byte에서 끝내게 된다.
프로토타입
UTL_RAW.XRANGE ( start_byte IN RAW DEFAULT NULL, end_byte IN RAW DEFAULT NULL ) RETURN RAW;
파라미터
파라미터 | 설명 |
---|---|
start_byte | 결과 값의 시작 Byte이다. |
end_byte | 결과 값의 종료 Byte이다. |
예제
BEGIN DBMS_OUTPUT.PUT_LINE(UTL_RAW.XRANGE('a', 'd')); END; / 0A0B0C0D PSM completed SQL>