
OracleLOB는 Large Object를 다루기 위한 기능입니다. BLOB(Binary Large OBject) 데이터를 쓰기 전에 프리패치가 필요합니다. 프리패치는 데이터를 읽어내는 것을 의미합니다.
OCILob::write 메서드를 사용할 때 프리패치는 필수적이지 않습니다. 하지만, 데이터를 쓰기 전에 프리패치를 하는 것이 좋습니다. 프리패치를 하지 않으면, 데이터를 쓰기 전에 데이터가 존재하지 않는 것으로 인식되어 오류가 발생할 수 있습니다.
예를 들어, BLOB 데이터를 쓰기 전에 프리패치를 하지 않고 OCILob::write 메서드를 호출하면, 데이터가 존재하지 않는 것으로 인식되어 오류가 발생할 수 있습니다.
#hostingforum.kr
sql
DECLARE
l_lob BLOB;
l_len NUMBER;
BEGIN
l_lob := OCILobLocate(...);
l_len := OCILobGetLength(l_lob);
IF l_len = 0 THEN
OCILobWrite(l_lob, 1, 1024, 'Hello, World!');
ELSE
OCILobWrite(l_lob, 1, 1024, 'Hello, World!');
END IF;
END;
위의 예시에서, BLOB 데이터가 존재하지 않는 경우에만 프리패치를 하여 데이터가 존재하는 것으로 인식합니다. 하지만, 데이터를 쓰기 전에 프리패치를 하는 것이 좋습니다.
#hostingforum.kr
sql
DECLARE
l_lob BLOB;
l_len NUMBER;
BEGIN
l_lob := OCILobLocate(...);
l_len := OCILobGetLength(l_lob);
IF l_len = 0 THEN
l_lob := OCILobCreate(l_lob, 1, 1024);
OCILobWrite(l_lob, 1, 1024, 'Hello, World!');
ELSE
OCILobWrite(l_lob, 1, 1024, 'Hello, World!');
END IF;
END;
위의 예시에서, BLOB 데이터가 존재하지 않는 경우에만 프리패치를 하여 데이터가 존재하는 것으로 인식합니다. 데이터를 쓰기 전에 프리패치를 하는 것이 좋습니다.
2025-04-20 07:47