이 섹션에는 SPI 사용에 대한 매우 간단한 예가 포함되어 있습니다. 는
  절차범퍼카 토토SQL을 사용합니다
  명령을 첫 번째 인수로 사용하고 행을 두 번째 인수로 계산합니다.
  다음을 사용하여 명령을 실행합니다.SPI_exec그리고 처리된 행 수를 반환합니다.
  명령. 소스에서 SPI에 대한 더 복잡한 예를 찾을 수 있습니다.
  나무 안에src/test/regress/regress.c그리고
  에서기여/spi.
#include "postgres.h"
#include "executor/spi.h"
#include "utils/buildins.h"
#ifdef PG_MODULE_MAGIC
PG_MODULE_MAGIC;
#endif
int 범퍼카 토토(text *sql, int cnt);
정수
범퍼카 토토(텍스트 *sql, int cnt)
    char *명령;
    int ret;
    int 프로세스;
    /* 주어진 텍스트 객체를 C 문자열로 변환 */
    명령 = text_to_cstring(sql);
    SPI_connect();
    ret = SPI_exec(명령어, cnt);
    proc = SPI_processed;
    /*
     * 일부 행을 가져온 경우 elog(INFO)를 통해 인쇄합니다.
     */
    if (ret  0 && SPI_tuptable != NULL)
        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++)
                snprintf(buf + strlen (buf), sizeof(buf) - strlen(buf), " %s%s",
                        SPI_getvalue(튜플, tupdesc, i),
                        (i == tupdesc-natts) ? " " : " |");
            elog(INFO, "EXECQ: %s", buf);
    SPI_finish();
    pfree(명령);
    반환(proc);
  (이 함수는 호출 규칙 버전 0을 사용하여 예를 들어 이해하기 더 쉽습니다. 실제 응용 프로그램에서는 다음을 사용해야 합니다. 새로운 버전 1 인터페이스.)
함수를 컴파일한 후 선언하는 방법입니다. 공유 라이브러리에 추가(자세한 내용은 참조)섹션 34.9.6.):
CREATE FUNCTION 범퍼카 토토(텍스트, 정수) RETURNS 정수
    그대로 '파일 이름'
    언어 C;
  다음은 샘플 세션입니다:
= SELECT 범퍼카 토토('CREATE TABLE a (x 정수)', 0);
 실행
-------
     0
(1줄)
= VALUES에 삽입 (범퍼카 토토('VALUES에 삽입 (0)', 0));
삽입 0 1
= SELECT 범퍼카 토토('SELECT * FROM a', 0);
INFO: EXECQ: 0 -- 범퍼카 토토에 의해 삽입됨
INFO: EXECQ: 1 -- 범퍼카 토토에 의해 반환되고 상위 INSERT에 의해 삽입됨
 실행
-------
     2
(1줄)
= SELECT 범퍼카 토토('INSERT INTO a SELECT x + 2 FROM a', 1);
 실행
-------
     1
(1줄)
= SELECT 범퍼카 토토('SELECT * FROM a', 10);
정보: EXECQ: 0
정보: EXECQ: 1
INFO: EXECQ: 2 -- 0 + 2, 지정된 대로 행 하나만 삽입됨
 실행
-------
     3 - 10은 최대값이고 3은 실제 행 수입니다.
(1줄)
= a에서 삭제;
3개 삭제
= VALUES에 삽입 (범퍼카 토토('SELECT * FROM a', 0) + 1);
삽입 0 1
= SELECT * FROM a;
 엑스
---
 1 - (0) + 1에 행이 없습니다.
(1줄)
= VALUES에 삽입 (범퍼카 토토('SELECT * FROM a', 0) + 1);
정보: EXECQ: 1
삽입 0 1
= SELECT * FROM a;
 엑스
---
 1
 2 - + 1에 행이 하나 있었습니다.
(2열)
-- 이는 데이터 변경 가시성 규칙을 보여줍니다.
= SELECT 범퍼카 토토('SELECT * FROM a', 0) * x FROM a에 삽입;
정보: EXECQ: 1
정보: EXECQ: 2
정보: EXECQ: 1
정보: EXECQ: 2
정보: EXECQ: 2
삽입 0 2
= SELECT * FROM a;
 엑스
---
 1
 2
 2 -- 2행 * 1(첫 번째 행의 x)
 6 - 3행(방금 삽입된 2 + 1) * 2(두 번째 행의 x)
(4줄) ^^^^^^
                       다른 호출에서 범퍼카 토토()에 표시되는 행