在执行另一个可能本身也想用 SPI 的过程之前,应该调用SPI_push
。在SPI_push
之后,SPI 就不再处于一种"已连接"状态,并且除非完成一次新的SPI_connect
否则 SPI 函数调用将被拒绝。这保证了在过程的 SPI 状态和另一个你调用的过程之间的完全隔离。在其他过程返回后,调用SPI_pop
以恢复对你自己的 SPI 状态的访问。
注意SPI_execute
和相关函数在将控制交回给 SQL 执行引擎之前会自动做SPI_push
的等效物,因此在使用那些函数时你无须担心这个问题。只有当你直接调用任何可能包含SPI_connect
调用的代码时,你才真正需要发出SPI_push
和SPI_pop
。