SPI_cursor_parse_open — configura un cursor usando una cadena de consulta y parámetros
Portal SPI_cursor_parse_open(const char *name, const char *command, const SPIParseOpenOptions *options)
SPI_cursor_parse_open configura un cursor
(internamente, un portal) que ejecutará la cadena de consulta especificada.
Esto es comparable a SPI_prepare_cursor seguido de
SPI_cursor_open_with_paramlist, con la diferencia de que
las referencias a parámetros dentro de la cadena de consulta se manejan por completo
suministrando un objeto ParamListInfo.
Para la ejecución de una consulta única, esta función debe preferirse
sobre SPI_prepare_cursor seguida de
SPI_cursor_open_with_paramlist.
Si el mismo comando se va a ejecutar con muchos parámetros diferentes,
cualquiera de los dos métodos podría ser más rápido, dependiendo del costo de volver
a planificar frente al beneficio de los planes personalizados.
El objeto options->params normalmente debería
marcar cada parámetro con la bandera PARAM_FLAG_CONST,
ya que siempre se utiliza un plan de un solo uso para la consulta.
Los datos de los parámetros pasados se copiarán en el portal del cursor, por lo que se pueden liberar mientras el cursor aún exista.
const char * name
nombre del portal, o NULL para permitir que el sistema
seleccione un nombre
const char * commandcadena de comando
const SPIParseOpenOptions * optionsestructura que contiene argumentos opcionales
Los llamadores siempre deben rellenar con ceros toda la estructura options
y luego completar los campos que deseen establecer. Esto garantiza la compatibilidad hacia adelante
del código, ya que cualquier campo que se agregue a la estructura en el futuro se definirá para
comportarse de manera compatible hacia atrás si es cero. Los campos de options
actualmente disponibles son:
ParamListInfo paramsestructura de datos que contiene los tipos y valores de los parámetros de la consulta; NULL si no hay ninguno
int cursorOptionsmáscara de bits entera de opciones del cursor; cero produce el comportamiento por defecto
bool read_onlytrue para una ejecución de solo lectura
Puntero al portal que contiene el cursor. Ten en cuenta que no hay una
convención de retorno de error; cualquier error se reportará a través de elog.