在执行另外一个可能也使用了 SPI 的过程之前,应该调用 SPI_push
。之后,SPI 不再是"已连接"状态,除非再次进行 SPI_connect
,否则 SPI 函数调用将被拒绝。这样就保证了你的过程的 SPI 状态和另外一个你调用的过程的状态之间的干净的隔离。在另外一个过程返回后,调用 SPI_pop
恢复对你自己的 SPI 状态的访问。
请注意 SPI_execute
和相关的函数在把控制交回 SQL 执行引擎之前自动做与 SPI_push
相当的工作,因此你在使用这些函数的时候不用担心这些。只有在你直接调用任意可能包含 SPI_connect
调用的代码的时候,你才需要发出 SPI_push
和 SPI_pop
。