
PdoPgsql::lobOpen 메서드는 PostgreSQL의 LOB 데이터를 열기 위한 메서드입니다. 이 메서드는 BLOB (Binary Large OBject)와 CLOB (Character Large OBject) 데이터를 모두 열 수 있습니다.
LOB 데이터를 열기 위해서는 먼저 LOB 데이터를 참조하는 OID (Object ID) 값을 알아야 합니다. OID 값은 LOB 데이터를 생성할 때 자동으로 할당됩니다.
BLOB 데이터를 열기 위해서는 다음과 같은 코드를 사용할 수 있습니다.
#hostingforum.kr
php
$pdo = new PDO('pgsql:host=localhost;dbname=mydb', 'myuser', 'mypassword');
$oid = 'OID 값'; // BLOB 데이터의 OID 값
$lob = $pdo->prepare('SELECT lo_open(:oid)');
$lob->bindParam(':oid', $oid);
$lob->execute();
$blob = $pdo->prepare('SELECT lo_read(:oid, :offset, :length)');
$blob->bindParam(':oid', $oid);
$blob->bindParam(':offset', $offset);
$blob->bindParam(':length', $length);
$blob->execute();
$data = $blob->fetch();
CLOB 데이터를 열기 위해서는 다음과 같은 코드를 사용할 수 있습니다.
#hostingforum.kr
php
$pdo = new PDO('pgsql:host=localhost;dbname=mydb', 'myuser', 'mypassword');
$oid = 'OID 값'; // CLOB 데이터의 OID 값
$lob = $pdo->prepare('SELECT lo_open(:oid)');
$lob->bindParam(':oid', $oid);
$lob->execute();
$clob = $pdo->prepare('SELECT lo_read(:oid, :offset, :length)');
$clob->bindParam(':oid', $oid);
$clob->bindParam(':offset', $offset);
$clob->bindParam(':length', $length);
$clob->execute();
$data = $clob->fetch();
이 메서드를 사용할 때 발생할 수 있는 에러는 다음과 같습니다.
- OID 값이 유효하지 않은 경우
- LOB 데이터가 존재하지 않는 경우
- LOB 데이터가 열리지 않는 경우 (권한 문제 등)
이러한 에러를 처리하기 위해서는 try-catch 블록을 사용할 수 있습니다.
#hostingforum.kr
php
try {
// LOB 데이터 열기
} catch (PDOException $e) {
// 에러 처리 코드
}
또한, LOB 데이터를 열기 전에 OID 값이 유효한지 확인하는 코드를 추가할 수 있습니다.
#hostingforum.kr
php
if ($pdo->query("SELECT EXISTS(SELECT 1 FROM pg_largeobject WHERE loid = $oid)")->fetchColumn() == 0) {
// OID 값이 유효하지 않은 경우
}
2025-08-10 22:24