SPI_cursor_open_with_args — ouvre un curseur en utilisant une requête et des paramètres
Portal SPI_cursor_open_with_args(const char *name
, const char *command
, intnargs
, Oid *argtypes
, Datum *values
, const char *nulls
, boolread_only
, intcursorOptions
)
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.
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
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
.