DBMS_LOB
DBMS_LOB 패키지의 기본 개념과 패키지 내의 프러시저와 함수를 사용하는 방법을 설명합니다.
개요
DBMS_LOB은 BLOB, CLOB 또는 BFILE 타입의 컬럼 데이터에 여러 가지 연산을 제공하는 패키지입니다. 또한, DBMS_LOB 패키지 내의 프러시저와 함수를 이용하여 대용량 객체형의 전체 또는 일부에 읽기, 쓰기 등의 작업을 수행할 수 있습니다.
다음은 DBMS_LOB 패키지를 사용할 때 유의해야 할 사항입니다.
호출자 권한
이 패키지는 호출자 권한으로 실행됩니다. 만약 다른 프러시저나 함수에서 호출되는 경우 해당 프러시 저나 함수의 실행자 권한으로 실행됩니다.
프러시저와 함수의 파라미터의 길이(length)와 오프셋(offset) 단위
대상(destination) 데이터가 BLOB 타입이면 바이트(Byte), CLOB 타입이면 문자(character) 단위입니다. 함수의 반환값도 이와 같습니다.
프러시저와 함수의 파라미터 값을 전달할 때 값의 유효 범위
LOB 데이터 내의 오프셋, 길이, 크기 등을 나타내는 값은 항상 1 이상이어야 하며 LOBMAXSIZE 상수의 값보다 크면 안 됩니다.
LOBMAXSIZE 상수는 18446744073709551615(2^64 – 1)의 값을 가집니다.
LOB 데이터 내의 오프셋, 길이, 크기 등이 1보다 작거나 LOBMAXSIZE보다 큰 값이면 IN VALID_ARGVAL 예외 상황이 발생합니다.
CLOB 타입의 컬럼 데이터
이 타입은 항상 유니코드 UTF-16 문자 집합의 문자열이 저장되며, 2bytes로 하나의 문자를 나타냅니다.
길이 또는 크기 값은 LOBMAXSIZE 상수를 2로 나눈 값보다 작아야 합니다.
만약 이 값보다 크면 마찬가지로 INVALID_ARGVAL 예외 상황이 발생합니다.
APPEND, COPY, TRIM, WRITE
LOB 데이터를 갱신하려는 프러시저와 함수의 파라미터로 크기와 오프셋 값의 합이 최댓값(LOBMAX SIZE 상수 값)을 초과하면 안 됩니다. 만약 초과하면 예외 상황이 발생합니다.
그리고 LOB 데이터를 갱신하려면 먼저 그 데이터를 포함하는 로우에 잠금(LOCK)을 설정해야 합니다. 프러시저나 함수 는 자동으로 잠금을 설정해 주지 않기 때문입니다.
READ, COMPARE, INSTR, SUBSTR
읽기 전용의 프러시저와 함수는 LOB 데이터의 마지막까지만 읽기를 수행합니다.
COMPARE, INSTR, SUBSTR
문자열 패턴의 작업을 수행하는 함수의 파라미터로 LIKE 함수에서 사용되는 퍼센트(%)와 언더바(_)와 같은 와일드 카드(wild card) 문자를 사용할 수 없습니다.
LOB 데이터를 수행할 때에는 먼저 대상 LOB 데이터를 OPEN 프러시저를 이용하여 열고, 작업이 끝나면 CLOSE 프러시저를 이용하여 닫습니다. 이때 OPEN 프러시저로 열린 LOB 데이터를 닫으면 데이터베이스 에 갱신된 내용이 반영됩니다.
반면에 OPEN 프러시저를 실행하여 열지 않은 LOB 데이터에 대해 갱신 연산을 수행하면 바로 데이터베 이스에 반영됩니다. 대개의 경우 LOB 데이터를 갱신하면 많은 디스크 작업이 수반되므로, 여러 번에 걸쳐 데이터베이스에 반영하는 것보다 한번에 모든 갱신을 데이터베이스에 반영하는 것이 효율적입니다.
OPEN 프러시저를 실행하여 LOB 데이터를 연 경우에는 COMMIT 문장을 실행하기 전에 반드시 CLOSE 프러시저를 실행하여 닫아야 합니다. 만약 열려있는 LOB 데이터가 있는데 COMMIT을 실행하면, 에러가 발생합니다. 열려 있는 LOB 데이터가 있을 때 ROLLBACK을 실행하면 모든 갱신은 취소되고 열려 있는 LOB 데이터에 대한 정보도 없어집니다.
다음은 DBMS_LOB 패키지 내에 정의된 상수입니다.
LOBMAXSIZE
LOB 데이터의 최대 크기입니다.
데이터 타입은 BINARY_INTEGER이고 LOB 데이터의 최대 크기는 18446744073709551615입니다.
LOB_READONLY
LOB 데이터에 대한 읽기 전용의 사용 여부를 설정하는 모드입니다.
데이터 타입은 BINARY_INTEGER이고 값이 0이면 읽기 전용으로 설정됩니다.
LOB_READWRITE
LOB 데이터의 읽기 및 쓰기를 설정하는 모드입니다.
데이터 타입은 BINARY_INTEGER이고 값이 1이면 읽기 및 쓰기로 설정됩니다.
FILE_READONLY
BFILE 을 열때 사용하는 모드입니다.
데이터 타입은 BINARY_INTEGER이고, 파일 열기 모드이며, 읽기 모드만 존재합니다.
예외
다음은 DBMS_LOB 패키지에서 미리 제공된 예외입니다. 자세한 내용은 “프러시저”와 “함수”의 "예외 사항" 항목을 참고합니다.
INVALID_ARGVAL
ACCESS_ERROR
NOTEXIST_DIRECTORY
NOPRIV_DIRECTORY
INVALID_DIRECTORY
OPERATION_FAILED
UNOPENED_FILE
OPEN_TOOMANY
프러시저
본 절에서는 DBMS_LOB 패키지에서 제공하는 프러시저를 알파벳 순으로 설명합니다.
APPEND
원본 LOB 데이터의 전체를 대상 LOB 데이터의 끝에 붙여 넣는 프러시저입니다.
APPEND 프러시저의 세부 내용은 다음과 같습니다.
프로토타입
– BLOB 타입인 경우
– CLOB 타입인 경우
CLOB 데이터를 전달하는 경우 dest_lob, src_lob 파라미터의 LOB 데이터의 문자 집합(character set)이 같아야 합니다.
파라미터
dest_lob
대상 LOB Locator
src_lob
원본 LOB Locator
예외 상황
VALUE_ERROR
대상 또는 원본 LOB 데이터가 NULL인 경우
예제
COPY
원본 LOB 데이터의 전체 또는 일부를 대상 LOB 데이터에 복사하는 프러시저입니다. 이때 복사할 원본 LOB 데이터의 오프셋과 대상 LOB 데이터의 오프셋을 지정할 수 있습니다. 만약 대상 LOB 데이터의 오프셋이 대상 LOB 데이터의 길이보다 짧으면 오프셋 위치에 존재하는 이전 데이터는 갱신됩니다.
이와는 반대로 대상 LOB 데이터 오프셋이 대상 LOB 데이터의 길이보다 길면 중간에 0(BLOB 데이터) 또는 공백(CLOB 데이터)으로 채워집니다.
COPY 프러시저의 세부 내용은 다음과 같습니다.
프로토타입
– BLOB 타입인 경우
– CLOB 타입인 경우
CLOB 데이터를 전달하는 경우 dest_lob, src_lob 파라미터의 LOB 데이터의 문자 집합이 같아야 합니다.
파라미터
dest_lob
대상 LOB Locator
src_lob
원본 LOB Locator
amount
복사할 Byte(BLOB 데이터) 또는 문자(CLOB 데이터)의 개수
dest_offset
대상 LOB 데이터 내의 오프셋
(단위: Byte(BLOB 데이터) 또는 문자(CLOB 데이터))
src_offset
원본 LOB 데이터 내의 오프셋
(단위: Byte(BLOB 데이터) 또는 문자(CLOB 데이터))
예외 상황
VALUE_ERROR
입력 파라미터 중 하나라도 NULL인 경우
INVALID_POS
src_offset, dest_offset의 값이 1보다 작거나 LOBMAXSIZE보다 큰 경우
INVALID_LEN
amount의 값이 1보다 작거나 LOBMAXSIZE보다 큰 경우
예제
CONVERTTOBLOB
입력으로 받은 CLOB을 BLOB으로 변환하는 프러시저입니다.
CONVERTTOBLOB 프러시저의 세부 내용은 다음과 같습니다.
프로토타입
파라미터
dest_lob
대상 LOB Locator
src_lob
원본 LOB Locator
amount
복사할 문자의 개수
dest_offset
대상 LOB 데이터 내의 오프셋 출력은 대상 LOB이 저장된 마지막 주소 (단위: Byte(BLOB 데이터))
src_offset
원본 LOB 데이터 내의 오프셋 출력은 원본 LOB을 읽은 마지막 주소 (단위: 문자(CLOB 데이터))
blob_csid
CLOB에서 변환된 데이터를 BLOB을 저장할 때 사용할 캐릭터 셋의 ID
lang_context
미사용
warning
미사용
예외 상황
VALUE_ERROR
입력 파라미터 중 하나라도 NULL인 경우
예제
CONVERTTOCLOB
입력으로 받은 BLOB을 CLOB으로 변환하는 프러시저입니다.
CONVERTTOCLOB 프러시저의 세부 내용은 다음과 같습니다.
프로토타입
파라미터
dest_lob
대상 LOB Locator
src_lob
원본 LOB Locator
amount
복사할 문자의 개수
dest_offset
대상 LOB 데이터 내의 오프셋 출력은 대상 LOB이 저장된 마지막 주소 (단위: Byte(BLOB 데이터))
src_offset
원본 LOB 데이터 내의 오프셋 출력은 원본 LOB을 읽은 마지막 주소 (단위: 문자(CLOB 데이터))
blob_csid
CLOB에서 변환된 데이터를 BLOB로 저장할 때 사용할 캐릭터 셋의 ID
lang_context
미사용
warning
미사용
예외 상황
VALUE_ERROR
입력 파라미터 중 하나라도 NULL인 경우
예제
CREATETEMPORARY
임시 CLOB 또는 임시 BLOB을 생성하는 프러시저입니다.
CREATETEMPORARY 프러시저의 세부 내용은 다음과 같습니다.
프로토타입
– BLOB 타입인 경우
– CLOB 타입인 경우
파라미터
lob
대상 LOB Locator
cache
LOB 데이터를 읽을 때 버퍼 캐시(buffer cache)에 저장할지 여부
dur
현재 이 파라미터는 CREATETEMPORARY 프러시저의 수명을 조정하는 기능을 지원하지 않음
단, 기본은 세션이 완료되면 CREATETEMPORARY 프러시저가 자동으로 삭제
예외 상황
VALUE_ERROR
캐시 파라미터가 NULL인 경우
예제
ERASE
LOB 데이터의 일부 또는 전체를 삭제하는 프러시저입니다. 삭제된 영역은 0(BLOB 데이터) 또는 공백(CLOB데이터)으로 채워집니다. 대상 LOB 데이터의 길이가 오프셋과 삭제할 영역 크기의 합보다 짧다면 실제로 삭제된 영역의 크기는 삭제할 영역으로 입력한 크기보다 작을 수 있습니다. 실제로 삭제된 영역의 크기는 amount 파라미터로 출력됩니다.
ERASE 프러시저의 세부 내용은 다음과 같습니다.
프로토타입
– BLOB 타입인 경우
– CLOB 타입인 경우
파라미터
lob
대상 LOB Locator
amount
삭제할 Byte 또는 문자 개수
offset
삭제할 오프셋
(단위: Byte(BLOB 데이터) 또는 문자(CLOB 데이터))
예외 상황
VALUE_ERROR
입력 파라미터가 하나라도 NULL인 경우
INVALID_POS
offset의 값이 1보다 작거나 LOBMAXSIZE보다 큰 경우
INVALID_LEN
amount의 값이 1보다 작거나 LOBMAXSIZE보다 큰 경우
예제
FILECLOSE
File Locator로 파일을 닫습니다.
FILECLOSE 프러시저의 세부 내용은 다음과 같습니다.
프로토타입
파라미터
file_loc
닫을 파일의 Locator
예외 상황
VALUE_ERROR
File locator가 NULL인 경우
예제
FILEOPEN의 예제를 참조합니다.
FILECLOSEALL
현 세션에 DBMS_LOB패키지를 사용해 열려있는 모든 파일을 닫습니다.
FILECLOSEALL 프러시저의 세부 내용은 다음과 같습니다.
프로토타입
예제
FILEGETNAME
File Locator로부터 디렉터리명과 파일명을 가져옵니다.
FILEGETNAME 프러시저의 세부 내용은 다음과 같습니다.
프로토타입
파라미터
file_loc
파일의 Locator
dir_alias
File Locator로부터 읽어올 디렉터리명
filename
File Locator로부터 읽어올 파일명
예외 상황
VALUE_ERROR
File locator가 NULL인 경우
예제
FILEOPEN
File Locator로 읽기 전용, 바이너리 모드로 파일을 엽니다.
FILEOPEN 프러시저의 세부 내용은 다음과 같습니다.
프로토타입
파라미터
file_loc
열 파일의 Locator
open_mode
파일 읽기 모드(file_readonly) 파라미터만 허용
예외 상황
VALUE_ERROR
File locator가 NULL인 경우
INVALID_ARGVAL
open_mode에 file_readonly 값외 다른 값이 온 경우
INVALID_DIRECTORY
File locator에 지정된 디렉터리가 유효하지 않나 존재하지 않는 경우
NOEXIST_DIRECTORY
File locator에 지정된 디렉터리 경로가 존재하 않는 경우
OPERATION_FAILED
디렉터리 경로에 파일이 존재하지 않거나, 파일 열수 없는 경우
예제
FREETEMPORARY
이미 생성된 임시 BLOB 또는 임시 CLOB을 삭제하는 프러시저입니다.
FREETEMPORARY 프러시저의 세부 내용은 다음과 같습니다.
프로토타입
– BLOB 타입인 경우
– CLOB 타입인 경우
파라미터
lob
대상 LOB Locator
예외 상황
VALUE_ERROR
입력 파라미터가 NULL인 경우
예제
LOADFROMFILE
파일 내용을 읽어서 LOB 데이터에 쓰기를 합니다. 파일은 열어져 있어야 하며, LOB도 생성된 상태여야 합니다. 본 프러시저에서는 문자집합 변환이 이뤄지지 않습니다. (CLOB의 데이터 내부 형태는 UCS2 인코딩이므로, CLOB으로 읽어들일 파일 인코딩또한 UCS2이어야 합니다. 그렇지 않는 경우 동작은 정의되지 않습니다).
LOADFROMFILE 프러시저의 세부 내용은 다음과 같습니다.
프로토타입
– BLOB 타입인 경우
– CLOB 타입인 경우
파라미터
dest_lob
대상 LOB Locator
src_file
LOB으로 읽어들일 bfile 타입의 파일 핸들
BLOB 및 CLOB 버전의 경우 문자집합의 변환이 없음(CLOB 버전을 사용하 는 경우 입력 텍스트 파일은 UCS2 인코딩만을 지원)
amount
파일로부터 읽어들일 크기(바이트 단위) (CLOB는 UCS2 인코딩을 가정하므로, 1문자당 2Bytes)
dest_offset
쓸 LOB의 offset (기본값: 1, 1 베이스)
src_offset
읽을 파일의 offset (기본값: 1, 1 베이스)
예외 상황
VALUE_ERROR
입력 파라미터가 적절하지 않는 경우 발생
예제
LOADBLOBFROMFILE
파일 내용을 읽어서, BLOB 데이터에 쓰기를 합니다. 파일은 열어져 있어야 하며, LOB도 생성된 상태여야 합니다.
LOADBLOBFROMFILE 프러시저의 세부 내용은 다음과 같습니다.
프로토타입
파라미터
dest_lob
대상 LOB Locator
src_file
LOB으로 읽어들일 bfile 타입의 파일
핸들 문자집합의 변환이 없음
amount
파일로부터 읽어들일 크기(바이트)
dest_offset
쓸 LOB의 offset(1 베이스)
프러시저가 완료된 후 offset은 쓰여진 만큼 수정됨
src_offset
읽을 파일의 offset(1 베이스)
프러시저가 완료된 후 offset은 읽혀진 만큼 수정됨
예외 상황
VALUE_ERROR
입력 파라미터가 적절하지 않는 경우 발생
예제
OPEN
File Locator로 읽기 전용, 바이너리 모드로 파일을 엽니다.
OPEN 프러시저의 세부 내용은 다음과 같습니다.
프로토타입
파라미터
file_loc
열 파일의 Locator
open_mode
파일 읽기 모드(file_readonly) 파라미터만 허용
예외 상황
VALUE_ERROR
File locator가 NULL인 경우
INVALID_ARGVAL
open_mode에 file_readonly 값 외 다른 값이 온 우
INVALID_DIRECTORY
File locator에 지정된 디렉터리가 유효하지 않나 존재하지 않는 경우
NOEXIST_DIRECTORY
File locator에 지정된 디렉터리 경로가 존재하 않는 경우
OPERATION_FAILED
디렉터리 경로에 파일이 존재하지 않거나, 파일 열수 없는 경우
예제
READ
대상 LOB 데이터의 일부 또는 전체를 읽어 출력 파라미터의 버퍼에 저장하는 프러시저입니다. 만약 읽기를 시작하는 오프셋과 읽을 크기의 합이 대상 LOB 데이터의 크기보다 커서 LOB 데이터의 끝을 지나가게 되 면, 실제 읽은 데이터의 크기는 파라미터로 주어진 읽을 크기보다 작을 수 있습니다. 이때 실제로 읽어온 데이터의 크기는 입출력 파라미터 amount에 저장되어 반환됩니다. 만약 읽을 오프셋의 위치가 대상 LOB 데이터 의 크기보다 크다면 NO_DATA_FOUND 예외 상황이 발생합니다.
CLOB 데이터로부터 읽은 데이터를 클라이언트에 전송하는 경우 클라이언트의 문자 집합으로 자동 변환 됩니다. 이 경우 실제로 읽어온 데이터와 달라질 수 있습니다.
READ 프러시저의 세부 내용은 다음과 같습니다.
프로토타입
– BLOB 타입인 경우
– CLOB 타입인 경우
– CLOB 타입인 경우
파라미터
lob_loc
읽을 대상 LOB Locator
file_loc
읽을 대상 File Locator
amount
읽을 크기를 입력하고 실제로 읽어온 크기를 출력 (단위: Byte(BLOB 데이터, FILE 데이터) 또는 문자(CLOB 데이터) 개수)
offset
읽을 대상 LOB 데이터 내의 오프셋 (단위: Byte(BLOB 데이터, FILE 데이터) 또는 문자(CLOB 데이터))
buffer
읽을 데이터를 저장하는 출력 버퍼
예외 상황
VALUE_ERROR
입력 파라미터 중 하나라도 NULL인 경우
INVALID_POS
offset의 값이 1보다 작거나 LOBMAXSIZE보다 큰 경우
INVALID_LEN
amount의 값이 1보다 작거나 MAXBUFSIZE보다 큰 경우
amount의 값이 버퍼의 크기보다 큰 경우
NO_DATA_FOUND
offset이 대상 LOB 데이터의 크기보다 큰 경우
UNOPENED_FILE
열리지 않은 File Locator로 연산을 수행하려 한 경우
예제
TRIM
대상 LOB 데이터의 길이를 지정된 길이로 설정하는 함수입니다. BLOB 데이터의 경우 Byte 단위로, CLOB 데이터의 경우 문자 단위로 길이를 지정합니다. 지정된 길이를 넘는 데이터는 소멸됩니다. 만약 이 프러시저를 길이가 0인 LOB 데이터로 실행하면 아무런 값이 반환되지 않습니다.
TRIM 프러시저의 세부 내용은 다음과 같습니다.
프로토타입
– BLOB 타입인 경우
– CLOB 타입인 경우
파라미터
lob
대상 LOB Locator
newlen
새롭게 지정된 LOB 데이터의 길이
(단위: Byte(BLOB 데이터) 또는 문자(CLOB 데이터))
예외 상황
VALUE_ERROR
입력 파라미터 중 하나라도 NULL인 경우
INVALID_LEN
newlen 값이 0보다 작거나 LOBMAXSIZE보다 큰 경우
예제
WRITE
대상 LOB 데이터의 지정된 오프셋 위치에 주어진 데이터를 지정된 크기만큼 저장하는 프러시저입니다. 새 로운 데이터가 저장되는 위치에 존재하는 이전 데이터는 소멸됩니다. BLOB 데이터에 대한 오프셋 및 크기 는 Byte 단위이며, CLOB 데이터에 대해서는 문자 단위입니다. 주어진 데이터의 실제 크기보다 지정된 크기 가 큰 경우에는 에러가 발생하며, 지정된 크기가 작은 경우에는 지정된 크기만큼만 저장됩니다. 지정된 오프 셋이 대상 LOB 데이터의 크기보다 큰 경우에는 중간에 0(BLOB 데이터) 또는 공백(CLOB 데이터)으로 채워집니다.
이 프러시저를 CLOB 데이터에 대하여 실행할 때 CLOB 데이터의 문자 집합과 저장할 데이터의 문자 집합은 같아야 합니다. 이 프러시저를 클라이언트 쪽에서 호출하는 경우 저장할 데이터가 클라이언트 쪽의 문자 집합으로부터 CLOB 데이터 문자 집합으로 변환된 후에 저장됩니다.
WRITE 프러시저의 세부 내용은 다음과 같습니다.
프로토타입
– BLOB 타입인 경우
– CLOB 타입인 경우
파라미터
lob
대상 LOB Locator
amount
저장할 데이터의 크기
(단위: Byte(BLOB 데이터) 또는 문자(CLOB 데이터))
offset
데이터를 저장할 오프셋
(단위: Byte(BLOB 데이터) 또는 문자(CLOB 데이터))
buffer
저장할 데이터
예외 상황
VALUE_ERROR
파라미터 중 하나라도 NULL인 경우
INVALID_POS
offset의 값이 1보다 작거나 LOBMAXSIZE보다 큰 경우
INVALID_LEN
amount의 값이 1보다 작거나 MAXBUFSIZE보다 큰 경우
예제
WRITEAPPEND
대상 LOB 데이터의 끝에 주어진 데이터를 지정된 크기만큼 저장하는 프러시저입니다. 이 프러시저는 WRITE 프러시저의 파라미터 오프셋을 대상 LOB 데이터의 길이로 설정한 것과 같습니다. BLOB 데이터의 크기는 Byte 단위이며, CLOB 데이터는 문자 단위입니다. 주어진 데이터의 실제 크기보다 지정된 크기가 큰 경우에는 에러가 발생하며, 지정된 크기가 작은 경우에는 지정된 크기만큼만 저장됩니다.
이 프러시저를 CLOB 데이터에 대하여 실행할 때에 CLOB 데이터의 문자 집합과 저장할 데이터의 문자집합은 같아야 합니다. 이 프러시저를 클라이언트 쪽에서 호출하는 경우 저장할 데이터가 클라이언트 쪽의 문자 집합에서 CLOB 데이터 문자 집합으로 변환된 후에 저장됩니다.
WRITEAPPEND 프러시저의 세부 내용은 다음과 같습니다.
프로토타입
– BLOB 타입인 경우
– CLOB 타입인 경우
파라미터
lob
대상 LOB Locator
amount
저장할 데이터의 크기
(단위: Byte(BLOB 데이터) 또는 문자(CLOB 데이터) 개수)
buffer
저장할 데이터
(단위: Byte(BLOB 데이터) 또는 문자(CLOB 데이터))
예외 상황
VALUE_ERROR
파라미터 중 하나라도 NULL인 경우
INVALID_LEN
amount 값이 1보다 작거나 MAXBUFSIZE보다 큰 경우
예제
함수
본 절에서는 DBMS_LOB 패키지에서 제공하는 함수를 알파벳 순으로 설명합니다.
CLOSE
File Locator로 파일을 닫습니다.
CLOSE 프러시저의 세부 내용은 다음과 같습니다.
프로토타입
파라미터
file_loc
닫을 파일의 Locator
예외 상황
VALUE_ERROR
File locator가 NULL인 경우
예제
OPEN의 예제를 참조합니다.
COMPARE
두 개의 LOB 데이터의 전체 또는 일부를 비교하는 함수입니다. 같은 타입의 LOB 데이터 간에만 비교가 가 능합니다.
COMPARE 함수의 세부 내용은 다음과 같습니다.
프로토타입
– BLOB 타입인 경우
– CLOB 타입인 경우
CLOB 데이터를 전달하는 경우 lob_1, lob_2 파라미터의 LOB 데이터의 문자 집합이 같아야 합니다.
파라미터
lob_1
비교 대상인 첫 번째 LOB Locator
lob_2
비교 대상인 두 번째 LOB Locator
amount
비교할 Byte의 크기(BLOB 데이터) 또는 문자(CLOB 데이터) 개수
offset_1
비교를 시작할 첫 번째 LOB 데이터 오프셋 (단위: Byte(BLOB 데이터) 또는 문자(CLOB 데이터))
offset_2
비교를 시작할 두 번째 LOB 데이터 오프셋 (단위: Byte(BLOB 데이터) 또는 문자(CLOB 데이터))
반환값
0
lob_1, lob_2의 LOB 데이터가 동일한 경우에 반환
N < 0 or N > 0
lob_1, lob_2의 LOB 데이터가 동일하지 않은 경우에 반환
NULL
amount가 1보다 작은 경우에 반환
amount가 LOBMAXSIZE보다 큰 경우에 반환
offset_1 또는 offset_2가 1보다 작은 경우에 반환
offset_1 또는 offset_2가 LOBMAXSIZE보다 큰 경우에 반환
예제
FILEEXISTS
File Locator로 해당 파일이 존재하는지 여부를 확인합니다.
FILEEXISTS 함수의 세부 내용은 다음과 같습니다.
프로토타입
파라미터
file_loc
존재 여부를 확인할 File Locator
예외 상황
VALUE_ERROR
File locator가 NULL인 경우
INVALID_DIRECTORY
File locator에 지정된 디렉터리가 유효하지 않나 존재하지 않는 경우
NOEXIST_DIRECTORY
File locator에 지정된 디렉터리 경로가 존재하 않는 경우
예제
FILEISOPEN
File Locator로 해당 파일에 세션에서 열어져 있는지를 확인합니다.
FILEISOPEN 함수의 세부 내용은 다음과 같습니다.
프로토타입
파라미터
file_loc
파일의 Locator
예외 상황
VALUE_ERROR
File locator가 NULL인 경우
예제
GETCHUNKSIZE
대상 LOB 객체의 chunk 크기를 반환하는 함수입니다. chunk란 Tibero에서 내부적으로 Lob 데이터를 나누 어 관리하는 단위이며, chunk의 배수로 read / write 작업을 요청할 경우 서버의 처리 로직이 최적화되어 수행됩니다.
GETCHUNKSIZE 함수의 세부 내용은 다음과 같습니다.
프로토타입
– BLOB 타입인 경우
– CLOB 타입인 경우
파라미터
lob
대상 LOB 데이터
반환값
INTEGER
GETCHUNKSIZE 함수가 성공적으로 종료된 경우에 반환
예제
GETLENGTH
대상 LOB 데이터의 길이를 반환하는 함수입니다. 이때 길이는 입력 LOB 데이터의 타입에 따라 Byte 또는 문자 단위의 값으로 반환됩니다.
GETLENGTH 함수의 세부 내용은 다음과 같습니다.
프로토타입
– BLOB 타입인 경우
– CLOB 타입인 경우
– BFILE 타입인 경우
파라미터
lob_loc
대상 LOB Locator
file_loc
대상 File Locator
반환값
0
빈 LOB 데이터인 경우에 반환
NULL
입력 LOB 데이터의 파라미터가 NULL인 경우에 반환
COPY, ERASE, WRITE 등의 프러시저에 의해 채워진 0(BLOB 데이터) 또는 공백(CLOB 데이터) 문자도 대상 LOB 데이터의 길이에 포함됩니다.
예제
INSTR
대상 LOB 데이터 내에서 주어진 패턴이 n 번째로 나타나는 오프셋을 반환하는 함수입니다. 패턴을 탐색하 는 위치는 대상 LOB 데이터의 처음일 수도 있고 입력 파라미터로 지정된 위치일 수도 있습니다. 이때 탐색할대상 패턴은 LIKE 연산자에서 사용되는 퍼센트(%) 또는 언더바(_)와 같은 와일드 카드 문자 등을 포함할 수 없습니다.
INSTR 함수의 세부 내용은 다음과 같습니다.
프로토타입
– BLOB 타입인 경우
– CLOB 타입인 경우
파라미터
lob
패턴을 탐색할 대상 LOB Locator
pattern
탐색할 패턴
offset
LOB 데이터 내의 탐색을 시작할 오프셋
(단위: Byte(BLOB 데이터) 또는 문자(CLOB 데이터))
nth
탐색할 패턴의 개수
1 이상의 값을 가지며, 1이면 첫 번째 패턴의 오프셋을 반환
반환값
INTEGER
패턴과 일치하는 부분을 찾은 경우 해당 패턴이 시작되는 오프셋을 반환
만약 찾지 못한 경우에는 0을 반환
NULL
IN 파라미터 중 하나라도 NULL인 경우에 반환
offset이 1보다 작거나 LOBMAXSIZE보다 큰 경우에 반환
nth가 1보다 작거나 LOBMAXSIZE보다 큰 경우에 반환
예제
ISOPEN
File Locator로 해당 파일에 세션에서 열어져 있는지를 확인합니다.
ISOPEN 함수의 세부 내용은 다음과 같습니다.
프로토타입
파라미터
file_loc
파일의 Locator
예외 상황
VALUE_ERROR
File locator가 NULL인 경우
예제
ISTEMPORARY
주어진 LOB이 임시 LOB인지 아닌지의 여부를 확인하는 함수입니다.
ISTEMPORARY 함수의 세부 내용은 다음과 같습니다.
프로토타입
– BLOB 타입인 경우
– CLOB 타입인 경우
파라미터
lob
대상 LOB Locator
반환값
0
임시 LOB이 아닌 경우에 반환
예제
SUBSTR
대상 LOB 데이터의 지정된 오프셋의 위치로부터 지정된 크기만큼의 데이터를 반환하는 함수입니다. 반환 될 최대 크기는 32767bytes이며, CLOB 데이터의 경우 반환될 최대 문자 개수는 32767을 2로 나눈 값입니다. CLOB 데이터에 대하여 이 함수를 호출하면 같은 문자 집합의 문자열이 반환됩니다.
이 함수는 하나의 파라미터라도 NULL이 넘겨지거나, 파라미터 amount 또는 offset의 값이 1보다 작거나
LOBMAXSIZE보다 큰 경우에 NULL을 반환합니다.
이 함수를 CLOB 데이터에 대해 클라이언트 쪽에서 호출한 경우 만약 클라이언트 쪽에 설정된 문자 집합 가 CLOB 데이터 문자 집합과 다르다면 데이터 전송 중에 자동적으로 문자 집합의 변환이 일어납니다.
SUBSTR 함수의 세부 내용은 다음과 같습니다.
프로토타입
– BLOB 타입인 경우
– CLOB 타입인 경우
파라미터
lob
대상 LOB 데이터
amount
읽을 데이터의 크기
(단위: Byte(BLOB 데이터) 또는 문자(CLOB 데이터) 개수)
offset
데이터를 읽을 LOB 데이터 내의 오프셋
(단위: Byte(BLOB 데이터) 또는 문자(CLOB 데이터))
반환값
RAW/VARCHAR2 데이터
SUBSTR 함수가 성공적으로 종료된 경우에 반환
NULL
입력 파라미터가 하나라도 NULL인 경우에 반환
amount가 1보다 작거나 32767bytes보다 큰 경우에 반환
offset이 1보다 작거나 LOBMAXSIZE보다 큰 경우에 반환
예제
Last updated

