我在使用libpq插入某些数据时遇到了一些困难。我有两种自定义数据类型:
create type size as (width real, height real);
create type rotated_rect as (angle real, center point, bounding_box box, size size)
并且我想将记录插入到具有旋转字段的表中,因此对于使用libpq的字段,我将字符串值放在一起:
paramv[3] = "(10.5,10.1,10.2,20,20,20,40,(5,5))";
但是,这给了我错误:类型点“10.1”的无效输入语法
我也尝试过:
paramv[3] = "(10.5,(10.1,10.2),20,20,20,40,(5,5))"; -> invalid input syntax for "(10.1"
paramv[3] = "(10.5,(10.1,10.2),(20,20,20,40),(5,5))"; -> as above
我正在使用的sql命令是:
res = PQexecParams(conn, "insert into test (r,b,s,rr) values ($1::real,$2::box,$3::size,$4::rotated_rect)", 4, NULL, paramv, NULL, NULL,0);
我该如何解决?
最佳答案
这有效(在Postgres 9.3中测试):
SELECT '(10.5,"(10.1,10.2)","(20,20,20,40)","(5,5)")'::rotated_rect
返回值:
'(10.5,"(10.1,10.2)","(20,40),(20,20)","(5,5)")'
注意
box
的不同语法。试试这个表格。关于c++ - 如何在libpq中插入此自定义数据类型?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/25192830/