SPI_cursor_open — met en place un curseur en utilisant un plan créé avec SPI_prepare
Portal SPI_cursor_open(const char * name, void * plan, Datum * values, const char * nulls, bool read_only)
SPI_cursor_open met en place un curseur (en interne, un portail) qui lancera un plan préparé par SPI_prepare. Les paramètres ont la même signification que les paramètres correspondant à SPI_execute_plan.
Utiliser un curseur au lieu de lancer le plan directement a deux avantages. Premièrement, les lignes de résultats peuvent être récupérées un certain nombre à la fois, évitant la saturation de mémoire pour les requêtes qui retournent trop de lignes. Deuxièmement, un portail peut survivre à la procédure courante (elle peut, en fait, vivre jusqu'à la fin de la transaction courante). Renvoyer le nom du portail à l'appelant de la procédure donne un moyen de retourner une série de ligne en tant que résultat.
nom pour le portail ou NULL pour laisser le système choisir un nom
plan d'exécution (retourné par SPI_prepare)
Un tableau des valeurs de paramètres actuelles. Doit avoir la même longueur que le nombre d'arguments du plan.
Un tableau décrivant quels paramètres sont NULL. Doit avoir la même longueur que le nombre d'arguments du plan. n indique une valeur NULL (l'entrée correspondante dans values sera ignorée) ; un espace indique une valeur non NULL (l'entrée correspondante dans valeurs est valide).
Si nulls est NULL, alors SPI_cursor_open part du principe qu'aucun paramètre n'est nul.
true pour les exécutions en lecture seule