Documentation PostgreSQL 15.15 » Programmation serveur » Interface de programmation serveur » Fonctions d'interface » SPI_cursor_parse_open

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

## SPI_cursor_parse_open

SPI_cursor_parse_open — provisionne un curseur en utilisant une requête sous forme chaîne et des paramètres

## Synopsis

    Portal SPI_cursor_parse_open(const char *name,
                                 const char *command,
                                 const SPIParseOpenOptions * options)

## Description

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.

## Arguments

`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

## Valeur de retour

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`.