Det lyder, som om du sandsynligvis vil bruge serverprogrammeringsgrænsefladen (SPI) at implementere en lagret procedure som en C-sprogfunktion kører inde i PostgreSQL-back-end.
Brug SPI_connect
for at konfigurere SPI.
Nu SPI_prepare_cursor
en forespørgsel, derefter SPI_cursor_open
det. SPI_cursor_fetch
rækker fra den og SPI_cursor_close
det når det er gjort. Bemærk at SPI_cursor_fetch
giver dig mulighed for at hente batches af rækker.
SPI_finish
at rydde op, når du er færdig.
Du kan returnere resultatrækkerne til en tuplestore, efterhånden som du genererer dem, og undgå behovet for at bygge hele tabellen i hukommelsen. Se eksempler i enhver af de sæt-returnerende funktioner i PostgreSQL-kildekoden. Du vil måske også se på SPI_returntuple
hjælpefunktion.
Se også:C-sprogfunktioner og udvidelse af SQL .
Hvis maksimal hastighed er af interesse, vil din klient måske bruge den binære libpq-protokol via libpqtypes så det modtager dataene produceret af din server-side SPI-brugende procedure med minimal overhead.