SPI_execute_with_args

SPI_execute_with_args —使用行外参数执行命令

Synopsis

int SPI_execute_with_args(const char *command,
                          int nargs, Oid *argtypes,
                          Datum *values, const char *nulls,
                          bool read_only, long count)

Description

SPI_execute_with_args执行的命令可能包含对外部提供的参数的引用。命令文本将参数称为$n,并且调用为每个此类符号指定数据类型和值。 * read_only count *与SPI_execute具有相同的解释。

SPI_execute相比,此例程的主要优点是可以将数据值插入到命令中,而不必进行繁琐的引号/转义操作,从而大大降低了 SQL 注入攻击的风险。

SPI_prepare后跟SPI_execute_plan可以达到类似的结果;但是,使用此功能时,查询计划始终根据提供的特定参数值进行定制。对于一次性查询执行,应该首选此功能。如果要使用许多不同的参数执行同一命令,则根据重新计划的成本与自定义计划的优势,这两种方法可能会更快。

Arguments

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

Return Value

返回值与SPI_execute相同。

如果成功,则将SPI_processedSPI_tuptable设置为SPI_execute

上一章 首页 下一章