2025 년 7 월 17 일 : | 윈 토토 : 윈 토토 18 베타 2
이 문서는 지원되지 않는 버전의 토토 베이을위한 것입니다.
당신은에 대해 같은 페이지를 볼 수 있습니다스포츠 토토 PostgreSQL : 문서 : 17 : 34.12. 큰버전 또는 위에 나열된 다른 지원 버전 중 하나입니다.

36.12. 큰 물체

대형 객체는 ECPG에 의해 직접 지원되지 않지만 ECPG 응용 프로그램은 LIBPQ 대형 객체 기능을 통해 큰 객체를 조작하여 필요한 것을 얻을 수 있습니다pg토토 베이객체를 호출하여ecpgget_pg토토 베이 ()함수. (그러나 사용ecpgget_pg토토 베이 ()기능과 터치pg토토 베이객체는 직접 수행해야하며 다른 ECPG 데이터베이스 액세스 통화와 혼합되지 않아야합니다.)

에 대한 자세한 내용은ecpgget_pg토토 베이 (), 참조PostgreSQL : 문서 : 11 : 36.11. 도서관. 대형 객체 함수 인터페이스에 대한 정보는 참조하십시오.윈 토토 : 문서 : 11 : 35 장. 큰 물체.

큰 객체 기능을 트랜잭션 블록에서 호출해야하므로 자동 커밋이 꺼져있을 때시작명령을 명시 적으로 발행해야합니다.

예 36.2ECPG 응용 프로그램에서 큰 객체를 작성, 쓰기 및 읽는 방법을 보여주는 예제 프로그램을 보여줍니다.

예 36.2. 대형 개체 액세스 ECPG 프로그램

#include <stdio.h
#include <stdlib.h
#include <libpq-fe.h
#include <libpq/libpq-fs.h

SQLERROR가 중지 될 때마다 SQL EXEC;

int
메인 (void)

    pg토토 베이 *conn;
    oid loid;
    int fd;
    Char Buf [256];
    int buflen = 256;
    Char Buf2 [256];
    int rc;

    Memset (Buf, 1, Buflen);

    exec sql testdb에 con1로 연결;
    Exec SQL 선택 PG_CATALOG.SET_CONFIG ( 'search_Path', '', False); Exec SQL 커밋;

    conn = ecpgget_pg토토 베이 ( "con1");
    printf ( "conn = %p \ n", conn);

    /* 만들다 */
    loid = lo_create (Conn, 0);
    if (loid & lt; 0)
        printf ( "lo_create () 실패 : %s", pqerrormessage (conn));

    printf ( "loid = %d \ n", loid);

    / * 쓰기 테스트 */
    fd = lo_open (conn, loid, inv_read | inv_write);
    if (fd & lt; 0)
        printf ( "lo_open () 실패 : %s", pqerrormessage (conn));

    printf ( "fd = %d \ n", fd);

    RC = LO_WRITE (Conn, FD, Buf, Buflen);
    if (rc & lt; 0)
        printf ( "lo_write () 실패 \ n");

    RC = LO_CLOSE (Conn, FD);
    if (rc & lt; 0)
        printf ( "lo_close () 실패 : %s", pqerrormessage (conn));

    / * 테스트 읽기 */
    fd = lo_open (conn, loid, inv_read);
    if (fd & lt; 0)
        printf ( "lo_open () 실패 : %s", pqerrormessage (conn));

    printf ( "fd = %d \ n", fd);

    RC = LO_READ (Conn, FD, Buf2, Buflen);
    if (rc & lt; 0)
        printf ( "lo_read () 실패 \ n");

    RC = LO_CLOSE (Conn, FD);
    if (rc & lt; 0)
        printf ( "lo_close () 실패 : %s", pqerrormessage (conn));

    /* 확인하다 */
    rc = memcmp (buf, buf2, buflen);
    printf ( "memcmp () = %d \ n", rc);

    / * 정리 */
    rc = lo_unlink (Conn, loid);
    if (rc & lt; 0)
        printf ( "lo_unlink () 실패 : %s", pqerrormessage (conn));

    Exec SQL 커밋;
    Exec SQL 모든 분리;
    반환 0;