이 문서는 지원되지 않는 PostgreSQL 버전에 대한 것입니다.
당신은 다음과 같은 페이지를 보고 싶을 수도 있습니다.스포츠 토토 베트맨 : 문서 : 17 : 33.3. 스포츠 토토 베트맨 인터페이스버전 또는 위에 나열된 다른 지원 버전 중 하나를 사용하세요.

2.3. 토토

시설포스트그레백엔드의 대형 객체에 대한 액세스를 제공합니다. 사용자 정의 함수 또는 애플리케이션의 일부인 프런트 엔드 인터페이스를 사용하는 방법은 아래에 설명되어 있습니다. 다음 사항에 익숙한 사용자의 경우포스트그레스 4.2, 포스트그레SQL새로운 기능 세트가 있습니다 보다 일관된 토토를 제공합니다.

참고:모든 대형 토토 조작반드시SQL 트랜잭션 내에서 발생합니다. 이 요구 사항은 Postgres 6.5부터 엄격하게 적용됩니다. 이전에는 암시적인 요구 사항이었지만 무시하면 오작동이 발생합니다.

포스트그레스대형 개체 인터페이스는 다음을 모델로 합니다.유닉스파일 시스템 인터페이스, 다음과 유사함열기(2), 읽기(2), 쓰기(2), lseek(2)등. 사용자 함수는 이러한 루틴을 호출합니다. 대형 객체에서 관심 있는 데이터만 검색합니다. 을 위한 예를 들어, 머그샷이라는 대형 객체 유형이 존재한다면 얼굴 사진을 저장하면 수염이라는 기능을 사용할 수 있습니다. 머그샷 데이터에 선언됩니다. Beard는 아래쪽 1/3을 볼 수 있습니다. 사진을 찍고 수염의 색깔을 결정하세요 거기에 나타났습니다. 전체 대형 객체 값은 다음과 같을 필요가 없습니다. 턱수염 기능에 의해 완충되거나 검사되기도 합니다. 대형 물체 동적으로 로드된 곳에서 액세스할 수 있습니다.C함수 또는 데이터베이스 클라이언트 프로그램 도서관을 연결하세요.포스트그레열기, 읽기, 큰 개체에 대한 쓰기, 닫기 및 검색.

2.3.1. 대형 토토 생성

루틴

Oid lo_creat(PGconn *, 정수모드)
새 대형 토토를 생성합니다.모드여러 가지를 설명하는 비트마스크입니다. 새 개체의 다른 속성. 기호 상수 여기에 나열된 내용은에 정의되어 있습니다.$PGROOT/src/backend/libpq/libpq-fs.h액세스 유형(읽기, 쓰기 또는 둘 다)은 OR을 함께 사용하여 제어됩니다. 비트INV_READ그리고INV_WRITE. 대형 객체를 아카이브해야 하는 경우 -- 즉, 이전 버전을 이동해야 하는 경우 주기적으로 특수 아카이브 관계에 연결합니다. 그런 다음INV_ARCHIVE비트가 설정되어야 합니다. 그만큼 마스크의 하위 16비트는 스토리지 관리자 번호입니다. 대형 개체가 상주해야 하는 위치입니다. 이외의 사이트의 경우 버클리, 이 비트는 항상 0이어야 합니다. 아래 명령 (반전) 대형 토토를 생성합니다:
inv_oid = lo_creat(INV_READ|INV_WRITE|INV_ARCHIVE);

2.3.2. 대형 개체 가져오기

가져오려면유닉스파일로 대형 개체, 호출

Oid lo_import(PGconn *, const char *파일 이름)
파일 이름다음을 지정합니다유닉스파일의 경로명 대형 개체로 가져왔습니다.

2.3.3. 대형 개체 내보내기

대형 개체를 다음으로 내보내려면유닉스파일, 전화

int lo_export(PGconn *, 오이드lobjId, const char *파일 이름)
lobjId 인수는 대형 개체의 Oid를 지정합니다. 내보내기 및 파일 이름 인수는 다음을 지정합니다.유닉스파일의 경로 이름.

2.3.4. 기존 대형 개체 열기

기존의 대형 개체를 열려면 다음을 호출하세요.

int lo_open(PGconn *conn, Oid lobjId, int 모드)
lobjId 인수는 대형 개체의 Oid를 지정합니다. 열려 있는. 모드 비트는 객체가 다음에 대해 열릴지 여부를 제어합니다. INV_READ 읽기), 쓰기 또는 둘 다. 큰 개체를 열 수 없습니다. 생성되기 전에요.lo_open다음을 반환합니다. 나중에 사용하기 위한 대형 객체 설명자lo_read, lo_write, lo_lseek, lo_telllo_close.

2.3.5. 대형 토토에 데이터 쓰기

루틴

int lo_write(PGconn *conn, int fd, const char *buf, size_t len)
buf에서 대형 객체 fd로 len 바이트를 씁니다. fd 인수 이전에 반환되었음에 틀림없습니다.lo_open. 실제로 쓰여진 바이트 수는 다음과 같습니다. 돌아왔다. 오류가 발생한 경우 반환 값은 음수입니다.

2.3.6. 대형 토토에서 데이터 읽기

루틴

int lo_read(PGconn *conn, int fd, char *buf, size_t len)
대형 객체 fd의 len 바이트를 byf로 읽습니다. fd 인수는 이전에 의해 반환되어야 합니다.lo_open. 실제로 읽은 바이트 수는 다음과 같습니다. 돌아왔다. 오류가 발생한 경우 반환 값은 음수입니다.

2.3.7. 대형 토토 탐색

현재 읽기 또는 쓰기 위치를 대규모로 변경하려면 객체, 호출

int lo_lseek(PGconn *conn, int fd, int offset, int whence)
이 루틴은 대형의 현재 위치 포인터를 이동합니다. fd에 의해 설명된 객체를 offset에 의해 지정된 새 위치로 이동합니다. 그만큼 유효한 값은 SEEK_SET, SEEK_CUR 및 SEEK_END입니다.

2.3.8. 대형 토토 설명자 닫기

큰 개체는 호출을 통해 닫힐 수 있습니다.

int lo_close(PGconn *conn, int fd)
여기서 fd는 다음에 의해 반환된 대형 객체 설명자입니다.lo_open. 성공하면,lo_close0을 반환합니다. 오류시 반품 값이 음수입니다.

2.3.9. 대형 개체 제거

데이터베이스에서 대형 개체를 제거하려면 다음을 호출하세요.

Oid lo_unlink(PGconn *, Oid lobjId)
lobjId 인수는 대형 개체의 Oid를 지정합니다. 제거하다.