Documentation PostgreSQL 14.22 » Programmation serveur » Interface de programmation serveur » Fonctions d'interface » SPI_cursor_open_with_args

Précédent | Niveau supérieur | Suivant
SPI_cursor_open | Sommaire | SPI_cursor_open_with_paramlist

## SPI_cursor_open_with_args

SPI_cursor_open_with_args — ouvre un curseur en utilisant une requête et des paramètres

## Synopsis

    Portal SPI_cursor_open_with_args(const char *name,
                                     const char *command,
                                     int nargs, Oid *argtypes,
                                     Datum *values, const char *nulls,
                                     bool read_only, int cursorOptions)

## Description

`SPI_cursor_open_with_args` initialise un curseur (en interne, un portail) qui exécutera la requête spécifiée. La plupart des paramètres ont la même signification que les paramètres correspondant de `SPI_prepare_cursor` et `SPI_cursor_open`.

Pour une exécution seule, cette fonction sera préférée à `SPI_prepare_cursor` suivie de `SPI_cursor_open`. Si la même commande doit être exécutée avec plusieurs paramètres différents, il n'y a pas de différences sur les deux méthodes, la replanification a un coût, mais bénéficie de plans personnalisés.

Les données passées seront copiées dans le portail du curseur, donc elles seront libérées alors que le curseur existe toujours.

## Arguments

`const char * `name``

  nom du portail, ou `NULL` pour que le système sélectionne un nom de lui-même

`const char * `command``

  chaîne de commande

`int `nargs``

  nombre de paramètres en entrée (`$1`, `$2`, etc.)

`Oid * `argtypes``

  un tableau de longueur `nargs`, contenant les OID des types de données des paramètres

`Datum * `values``

  un tableau de longueur `nargs`, contenant les valeurs actuelles des paramètres

`const char * `nulls``

  un tableau de longueur `nargs`, décrivant les paramètres NULL

  Si `nulls` vaut `NULL`, alors `SPI_cursor_open_with_args` suppose qu'aucun paramètre n'est NULL. Dans le cas contraire, chaque entrée du tableau `nulls` doit valoir `' '` si le paramètre correspondant est non NULL et `'n'` si le paramètre correspondant est NULL (dans ce dernier cas, la valeur réelle de l'entrée `values` correspondante n'a pas d'importance). Notez que `nulls` n'est pas une chaîne de texte. C'est un tableau et, de ce fait, il n'a pas besoin d'un caractère de fin `'\0'`.

`bool `read_only``

  `true` pour une exécution en lecture seule

`int `cursorOptions``

  masque de bits des options du curseur : zéro cause le comportement par défaut

## Valeur de retour

Pointeur du portail contenant le curseur. Notez qu'il n'y a pas de convention pour le renvoi des erreurs ; toute erreur sera rapportée par `elog`.