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ée 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 * command
Chaîne de la commande
const SPIParseOpenOptions * options
Structure 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 params
Structure de données contenant les types et valeurs de paramètres de la requête ; NULL si aucun
int cursorOptions
Masque de bits entiers des options de curseur ; zéro génère le comportement par défaut
bool read_only
true
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
.