PostgreSQL 中文参考文档
🌐 英文原版 官方 ↗

SPI_saveplan

SPI_saveplan — 保存一个预备好的语句

Synopsis

SPIPlanPtr SPI_saveplan(SPIPlanPtr plan)

描述

SPI_saveplan 把一个传入的语句 (由 SPI_prepare 预备)复制到不会被 SPI_finish 也不会被事务管理器释放的 内存中, 并返回一个指向被复制语句的指针。 这使您能够在当前会话中后续的 C 函数调用里复用预备好的 语句。

参数

SPIPlanPtr plan

要保存的预备语句

返回值

指向被复制语句的指针;如果不成功则为 NULL。 出错时, SPI_result 被设置为:

SPI_ERROR_ARGUMENT

如果 plan 为 NULL 或无效

SPI_ERROR_UNCONNECTED

如果是从未连接的 C 函数调用

注意

最初传入的语句不会被释放,因此您可能希望对它使用 SPI_freeplan,以避免在 SPI_finish 之前泄漏内存。

在大多数情况下, SPI_keepplan 优于这个函数, 因为它无需物理复制预备语句的数据结构就能基本达成相同的 结果。