SPI_connect opens a connection
  from a procedure invocation to the SPI manager. You must call
  this function if you want to execute commands through SPI. Some
  utility SPI functions can be called from unconnected
  procedures.
If your procedure is already connected, SPI_connect will return the error code
  SPI_ERROR_CONNECT. This could
  happen if a procedure that has called SPI_connect directly calls another procedure
  that calls SPI_connect. While
  recursive calls to the SPI
  manager are permitted when an SQL command called through SPI
  invokes another function that uses SPI, directly nested calls to SPI_connect and SPI_finish are forbidden. (But see SPI_push and SPI_pop.)