Wygląda na to, że prawdopodobnie chcesz użyć interfejsu programowania serwera (SPI) zaimplementować procedurę składowaną jako funkcję języka C działa wewnątrz zaplecza PostgreSQL.
Użyj SPI_connect
aby skonfigurować SPI.
Teraz SPI_prepare_cursor
zapytanie, a następnie SPI_cursor_open
to. SPI_cursor_fetch
wiersze z niego i SPI_cursor_close
to po zakończeniu. Zauważ, że SPI_cursor_fetch
pozwala na pobieranie partii wierszy.
SPI_finish
posprzątać po zakończeniu.
Możesz zwracać wiersze wyników do magazynu krotek podczas ich generowania, unikając konieczności budowania całej tabeli w pamięci. Zobacz przykłady w dowolnej funkcji zwracającej zestaw w kodzie źródłowym PostgreSQL. Możesz również spojrzeć na SPI_returntuple
funkcja pomocnicza.
Zobacz też:Funkcje języka C i rozszerzanie SQL .
Jeśli interesująca jest maksymalna prędkość, twój klient może chcieć użyć binarnego protokołu libpq przez libpqtypes więc otrzymuje dane generowane przez procedurę wykorzystującą SPI po stronie serwera przy minimalnym nakładzie pracy.