이 SPI 사용 예는 가시성 규칙을 보여줍니다. src/test/regress/regress.c에는 더 복잡한 예가 있으며 기여/spi에서.
이것은 SPI 사용의 매우 간단한 예입니다. 절차 토토 사이트 순위는 첫 번째 인수에 SQL 쿼리를 허용하고 두 번째는 SPI_exec를 사용하여 쿼리를 실행하고 쿼리가 실행된 튜플 수:
#include "executor/spi.h" /* SPI로 작업하는 데 필요한 것입니다 */
int 토토 사이트 순위(text *sql, int cnt);
정수
토토 사이트 순위(텍스트 *sql, int cnt)
    char *쿼리;
    int ret;
    int 프로세스;
    /* 주어진 TEXT 객체를 C 문자열로 변환 */
    쿼리 = DatumGetCString(DirectFunctionCall1(textout,
                                                PointerGetDatum(sql)));
    SPI_connect();
    ret = SPI_exec(쿼리, cnt);
    proc = SPI_processed;
    /*
     * 이것이 SELECT이고 일부 튜플을 가져온 경우 -
     * elog(NOTICE)를 통해 호출자에게 튜플을 반환합니다.
     */
    if ( ret == SPI_OK_SELECT && SPI_processed  0 )
        TupleDesc tupdesc = SPI_tuptable-tupdesc;
        SPITupleTable *tuptable = SPI_tuptable;
        char buf[8192];
        int i,j;
        for (j = 0; j < proc; j++)
            HeapTuple 튜플 = tuptable-vals[j];
            for (i = 1, buf[0] = 0; i <= tupdesc-natts; i++)
                sprintf(buf + strlen (buf), " %s%s",
                        SPI_getvalue(튜플, tupdesc, i),
                        (i == tupdesc-natts) ? " " : " |");
            elog(알림, "토토 사이트 순위: %s", buf);
    SPI_finish();
    pfree(쿼리);
    반환(proc);
  이제 함수를 컴파일하고 생성하십시오:
생성 함수 토토 사이트 순위(text, int4)는 int4를 '...path_to_so' 언어 'c'로 반환합니다.
vac= select 토토 사이트 순위('테이블 a 생성(x int4)', 0);
실행
-----
    0
(1줄)
vac= 값에 삽입 (토토 사이트 순위('값에 삽입 (0)',0));
삽입 167631 1
vac= select 토토 사이트 순위('select * from a',0);
공지:토토 사이트 순위: 0 <<< 토토 사이트 순위에 의해 삽입됨
NOTICE:토토 사이트 순위: 1 <<< 토토 사이트 순위에 의해 반환되고 상위 INSERT에 의해 삽입된 값
실행
-----
    2
(1줄)
vac= select 토토 사이트 순위('a에서 x + 2를 선택하여 삽입',1);
실행
-----
    1
(1줄)
vac= select 토토 사이트 순위('select * from a', 10);
공지사항:토토 사이트 순위: 0 
공지사항:토토 사이트 순위: 1 
NOTICE:토토 사이트 순위: 2 <<< 0 + 2, 지정된 대로 하나의 튜플만 삽입됨
실행
-----
    3 <<< 10은 최대값만, 3은 실수 튜플 수입니다.
(1줄)
vac= a에서 삭제;
3개 삭제
vac= 값에 삽입 (토토 사이트 순위('select * from a', 0) + 1);
삽입 167712 1
vac= a에서 *를 선택합니다;
엑스
-
1 <<< (0) + 1에는 튜플이 없습니다.
(1줄)
vac= 값에 삽입 (토토 사이트 순위('select * from a', 0) + 1);
공지사항:토토 사이트 순위: 0 
삽입 167713 1
vac= a에서 *를 선택합니다;
엑스
-
1
2 <<< a + 1에 단일 튜플이 있었습니다.
(2열)
-- 이는 데이터 변경 가시성 규칙을 보여줍니다.
vac= 선택에 삽입 토토 사이트 순위('select * from a', 0) * x from a;
공지사항:토토 사이트 순위: 1 
공지사항:토토 사이트 순위: 2 
공지사항:토토 사이트 순위: 1 
공지사항:토토 사이트 순위: 2 
공지사항:토토 사이트 순위: 2 
삽입 0 2
vac= a에서 *를 선택합니다;
엑스
-
1
2
2 <<< 2 튜플 * 1 (첫 번째 튜플의 x)
6 <<< 3개의 튜플(방금 삽입된 2 + 1) * 2(두 번째 튜플의 x)
(4열) ^^^^^^^^ 
                     다른 호출에서 토토 사이트 순위()에 표시되는 튜플