在 PostgreSQL 的 SPI(Server Programming Interface)库中,没有提供名为 SPI_getargtypeid 的直接函数。然而,你可以使用 SPI_plan_get_argtype 函数来获取查询计划中特定参数的类型。

以下是使用 SPI_plan_get_argtype 函数获取参数类型的示例:
#include "postgres.h"
#include "executor/spi.h"

PG_MODULE_MAGIC;

PG_FUNCTION_INFO_V1(my_function);

Datum
my_function(PG_FUNCTION_ARGS)
{
    SPIPlanPtr plan;
    int nargs, i;

    /* 准备查询计划 */
    plan = SPI_prepare("SELECT * FROM my_table WHERE id = $1 AND name = $2", 2, (Oid []){INT4OID, TEXTOID});

    if (plan == NULL)
        elog(ERROR, "SPI_prepare failed");

    /* 获取参数数量 */
    nargs = SPI_getargcount(plan);

    /* 输出参数的类型 */
    for (i = 1; i <= nargs; i++) {
        Oid argtype = SPI_plan_get_argtype(plan, i);
        elog(INFO, "Parameter %d has type OID %u", i, argtype);
    }

    /* 在这里可以执行其他操作 */

    PG_RETURN_NULL();
}

在这个例子中,SPI_plan_get_argtype 函数用于获取查询计划中每个参数的类型。循环遍历参数并输出其类型的 OID。

请确保在使用 SPI 函数时了解 PostgreSQL 版本的特定细节,因为不同版本之间可能存在差异。


转载请注明出处:http://www.zyzy.cn/article/detail/8555/PostgreSQL