c - PostgreSQL C 函数获取参数 varchar 类型

标签 c postgresql

如何从 PG_FUNCTION_ARGS 获取 arg varchar?

我想构造这个查询,但也不用 PG_GETARG_VARCHAR_P 也不用 PG_GETARG_TEXT_P 有效。

  sprintf(query,"SELECT abp1::real, abp2::real "
                "FROM imu.calcolo WHERE cf = %s;", PG_GETARG_VARCHAR_P(0));

我收到警告编译

警告:格式“%s”需要类型为“char *”的参数,但参数 3 的类型为“struct VarChar *”[-Wformat]

在 PG_GETARG_VARCHAR_P(0) 的奇怪内容之后,它是 'P' ??

有人可以给个提示吗?

最佳答案

使用VARDATA:

VARDATA(PG_GETARG_VARCHAR_P(0))

编辑

请记住还要使用 VARSIZE 来获取数据的长度,因为据我所知,数据不是以 null 结尾的,sprintf 会炸毁目标缓冲区。

此处提供更多信息:http://www.postgresql.org/docs/8.3/static/xfunc-c.html

关于c - PostgreSQL C 函数获取参数 varchar 类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20007827/

相关文章:

c - 8位取模256如何得到校验和?

c - 刷新 linux OS 串行缓冲区

php - 使用 SQL 匹配两个表

postgresql - 如何仅使用 SSL 连接配置 postgresql 用户?

sql - 优化 SQL 查询

c - 客户端套接字代码中的取消引用错误

c - 在c中获取字符串的子字符串

c++ - 使用 fscanf 解析文件

postgresql - 在 sqlalchemy 中提交之前运行清理/验证代码

postgresql - 安装libpq-dev包报错