SPI_finish - disconnect a procedure from the SPI manager
SPI_finish closes an existing connection to the SPI manager. You must call this function after completing the SPI operations needed during your procedures current invocation. You do not need to worry about making this happen, however, if you abort the transaction via elog(ERROR). In that case SPI will clean itself up automatically.
If SPI_finish is called without having a valid connection, it will return SPI_ERROR_UNCONNECTED. There is no fundamental problem with this; it means that the SPI manager has nothing to do.
SPI_OK_FINISH if properly disconnected SPI_ERROR_UNCONNECTED if called from an unconnected procedure