SPI_cursor_parse_open — provisionne un curseur en utilisant une requête sous forme chaîne et des paramètres
Portal SPI_cursor_parse_open(const char *name, const char *command, const SPIParseOpenOptions *options)
La fonction SPI_cursor_parse_open provisionne un
curseur (en interne, un portail) qui exécutera une requête spécifiée dans
une chaine. Elle est comparable à l'appel de
SPI_prepare_cursor suivie de
SPI_cursor_open_with_paramlist, à l'exception que les
références des paramètres dans la chaine de la requête sont entièrement
gérées en fournissant un objet ParamListInfo.
Pour une exécution unique d'une requête, cette fonction devrait être préférée
à l'appel de SPI_prepare_cursor suivie par
SPI_cursor_open_with_paramlist.
Si la même commande doit être exécutée avec de nombreux paramètres différents,
l'une ou l'autre méthode pourrait être plus rapide, en fonction du coût de
recalcul du plan par rapport aux bénéfices des plans personnalisés.
L'objet options->params doit normalement
marqué chaque paramètre avec le drapeau PARAM_FLAG_CONST,
comme un plan unique est toujours utilisé par la requête.
Le paramètre passé en entrée sera copié dans le portail du curseur, ainsi il peut être libéré alors que le curseur existe toujours.
const char * name
Nom du portail, ou NULL pour laisser le système
choisir un nom
const char * commandChaîne de la commande
const SPIParseOpenOptions * optionsStructure contenant les arguments optionnels
Les appelants doivent toujours mettre à zéro la structure entière
options, puis remplir les champs nécessaires à
affecter. Ceci assure la compatibilité ascendante du code, comme tout
champ ajouté à la structure dans le futur sera défini comme
rétro-compatible s'il est mis à zéro. Les champs de
options actuellement disponibles sont :
ParamListInfo paramsStructure de données contenant les types et valeurs de paramètres de la requête ; NULL si aucun
int cursorOptionsMasque de bits entiers des options de curseur ; zéro génère le comportement par défaut
bool read_onlytrue pour une exécution en lecture seule
Pointeur de portail contenant le curseur. Notez qu'il n'y a pas de
convention de retour d'erreur ;
n'importe quelle erreur sera affichée via elog.