SPI_cursor_open

SPI_cursor_open —使用使用SPI_prepare创建的语句设置游标

Synopsis

Portal SPI_cursor_open(const char * name, SPIPlanPtr plan,
                       Datum * values, const char * nulls,
                       bool read_only)

Description

SPI_cursor_open设置了一个游标(内部为门户),该游标将执行SPI_prepare准备的语句。这些参数与SPI_execute_plan的相应参数具有相同的含义。

使用游标而不是直接执行语句有两个好处。首先,可以一次检索几行结果,从而避免了返回很多行的查询的内存溢出。第二,门户可以超过当前的 C 函数(实际上,它可以生存到当前事务的末尾)。将门户网站名称返回给 C 函数的调用者,提供了一种返回行集作为结果的方法。

传入的参数数据将被复制到游标的门户中,因此可以在游标仍然存在时将其释放。

Arguments

  • const char * name

    • 门户的名称,或NULL以让系统选择名称
  • SPIPlanPtr plan

    • 准备好的语句(由SPI_prepare返回)
  • Datum * values

    • 实际参数值的数组。长度必须与语句的参数个数相同。
  • const char * nulls

    • 一个数组,描述哪些参数为空。长度必须与语句的参数个数相同。

如果* nulls NULL,则SPI_cursor_open假定没有参数为空。否则, nulls 数组的每个条目如果对应的参数值为非空,则应为' ';如果对应的参数值为 null,则应为'n'。 (在后一种情况下,相应的 values 条目中的实际值无关紧要.)请注意, nulls *不是文本字符串,而只是数组:它不需要'\0'终止符。

  • bool read_only

    • true用于只读执行

Return Value

指向包含光标的门户的指针。注意没有错误返回约定。任何错误将通过elog报告。