Изглежда, че вероятно искате да използвате интерфейс за програмиране на сървъра (SPI) за внедряване на съхранена процедура като функция на C език работещ в задната част на PostgreSQL.
Използвайте SPI_connect
за настройка на SPI.
Сега SPI_prepare_cursor
заявка, след което SPI_cursor_open
то. SPI_cursor_fetch
редове от него и SPI_cursor_close
когато е готово. Обърнете внимание, че SPI_cursor_fetch
ви позволява да извличате партиди от редове.
SPI_finish
за почистване, когато сте готови.
Можете да върнете редовете с резултати в tuplestore, докато ги генерирате, избягвайки необходимостта да изграждате цялата таблица в паметта. Вижте примери във всяка от функциите за връщане на множество в изходния код на PostgreSQL. Може също да искате да погледнете SPI_returntupleкод>
помощна функция.
Вижте също:Функции на езика C и разширяване на SQL .
Ако максималната скорост е от интерес, вашият клиент може да иска да използва бинарния протокол libpq чрез libpqtypes така че получава данните, произведени от вашата SPI-използваща процедура от страна на сървъра, с минимални разходи.