---
name: "SPI_execp"
section: "3"
platform: "linux"
package: "postgresql"
version: "18.6-4"
release: "Arch Linux 2026-11-01"
platforms: ["linux"]
url: "https://new.carta.tech/SPI_execp"
---

# SPI\_execp(3)

execute a statement in read/write mode

## NAME

SPI\_execp - execute a statement in read/write mode

## SYNOPSIS

```
int SPI_execp(SPIPlanPtr plan, Datum * values, const char * nulls, long count)
```

## DESCRIPTION

**SPI\_execp** is the same as **SPI\_execute\_plan**, with the latter's *read\_only* parameter always taken as false.

## ARGUMENTS

SPIPlanPtr *plan*

prepared statement (returned by **SPI\_prepare**)

Datum \* *values*

An array of actual parameter values. Must have same length as the statement's number of arguments.

const char \* *nulls*

An array describing which parameters are null. Must have same length as the statement's number of arguments.

If *nulls* is NULL then **SPI\_execp** assumes that no parameters are null. Otherwise, each entry of the *nulls* array should be ' ' if the corresponding parameter value is non-null, or 'n' if the corresponding parameter value is null. (In the latter case, the actual value in the corresponding *values* entry doesn't matter.) Note that *nulls* is not a text string, just an array: it does not need a '\\0' terminator.

long *count*

maximum number of rows to return, or 0 for no limit

## RETURN VALUE

See **SPI\_execute\_plan**.

*SPI\_processed* and *SPI\_tuptable* are set as in **SPI\_execute** if successful.
