Rb Cafe » Postgres » Documentation PostgreSQL 13.10 » Programmation serveur » Interface de programmation serveur » Fonctions d'interface » SPI_cursor_open_with_args

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é. 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éthode, 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.