如何从 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/