---
title: "SPI_connect"
id: spi-spi-connect
pg_version: "20devel"
---
# SPI_connect, SPI_connect_ext — connect a C function to the SPI manager
## Synopsis
```
int SPI_connect(void)
```
```
int SPI_connect_ext(int options)
```
## Description
`SPI_connect` opens a connection from a C function 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 C functions.
`SPI_connect_ext` does the same but has an argument that allows passing option flags. Currently, the following option values are available: **`SPI_OPT_NONATOMIC`**
Sets the SPI connection to be *nonatomic*, which means that transaction control calls (`SPI_commit`, `SPI_rollback`) are allowed. Otherwise, calling those functions will result in an immediate error.
`SPI_connect()` is equivalent to `SPI_connect_ext(0)`.
## Return Value
**`SPI_OK_CONNECT`**
on success The fact that these functions return `int` not `void` is historical. All failure cases are reported via `ereport` or `elog`. (In versions before PostgreSQL v10, some but not all failures would be reported with a result value of `SPI_ERROR_CONNECT`.)