如何使用Java的自定义类型参数调用PostgreSQL存储过程

什穆利

我有一个PostgreSQL自定义类型:

CREATE TYPE seg_type AS
(
    _timestamp bigint,
    segment_type bigint,
    area_type bigint,
);

我有一个Java类:

public class Segment
{
    private Long ts;
    private Long seg_type;
    private Long area_type;
}

另外我有一个存储过程:

CREATE OR REPLACE FUNCTION SomeFunc(seg_type[])

我正在使用postgresql-9.3-1102.jdbc41.jar连接到我的数据库。我希望能够使用Segment []从Java代码调用存储过程,如下所示:

String query = new String("{call SomeFunc(?)}");
CallableStatement stmt = dbConn.prepareCall(query);
stmt.setObject(1, Segment[], Type);

如果这是正确的实现,那么我应该在Type中输入什么?还是实施不正确?

烧小

可能的解决方案如下:

javaSegment类中创建一个函数,该函数以postgreSQL类型的格式创建一个字符串。

public class Segment
{
   private Long ts;
   private Long seg_type;
   private Long area_type;

   public pgType(){
      return String.format("\"(%d,%d,%d)\"",
         this.ts, this.seg_type, this.area_type)
   }
}

注意:对于不同的数据类型,您可能需要以不同的方式设置字符串格式。

这将返回以下字符串"(ts, seg_type, area_type)",表示seg_typepostgres中类型。

现在,您需要初始化Segment[]数组以形成postgres array

StringBuilder segTypeArray = new StringBuilder("{");
segTypeArray.append(segments.[0].getDBValue());  
for(int i = 1; i < segments.length; i++){
   segTypeArray.append("," + list.get(i).getDBValue());
}
segTypeArray.append("}");

这将创建一个postgres arrayseg_type类型{"(ts, seg_type, area_type)","(ts, seg_type, area_type)",.....}

创建查询字符串时,请确保强制转换为seg_type []

String query = new String("{call SomeFunc(?::seg_type[])}");
CallableStatement stmt = dbConn.prepareCall(query);
stmt.setObject(1, segTypeArray.toString());

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

JDBCIO调用以自定义对象类型为参数的Postgres例程(存储过程)

来自分类Dev

在存储过程中使用自定义类型

来自分类Dev

将Oracle存储过程结果映射到自定义Java类型(类)

来自分类Dev

Plsql 使用自定义类型作为表运行存储过程

来自分类Dev

如何使用JDBC调用PostgreSQL存储过程

来自分类Dev

如何使用JDBC调用PostgreSQL存储过程

来自分类Dev

从Java调用存储类型为Record的参数的存储过程

来自分类Dev

如何在Java中使用自定义类型注释

来自分类Dev

如何在PostgreSQL中将自定义类型的多维数组作为函数参数传递?

来自分类Dev

使用JTDS调用存储过程时如何设置空表类型参数

来自分类Dev

F#:使用自定义类型参数调用本机函数

来自分类Dev

使用用户定义的参数调用存储过程

来自分类Dev

使用用户定义的参数调用存储过程

来自分类Dev

如何调用自定义Java数组

来自分类Dev

自定义代码存储过程

来自分类Dev

如何使用自定义类型malloc()?

来自分类Dev

如何在Java代码中从Postgresql调用存储过程

来自分类Dev

如何使 JSF 自定义组件存储自定义类型作为其值?

来自分类Dev

IBM Worklight-如何使用“ OUT”参数调用存储过程?

来自分类Dev

如何在python中使用参数调用存储过程?

来自分类Dev

如何为自定义类的参数指定类型提示?

来自分类Dev

在VB.NET中调用自定义SQL Server存储过程和URL重定向

来自分类Dev

具有自定义BODY参数的Worklight Client调用过程

来自分类Dev

在PHP中调用过程时的PLSQL自定义数据类型

来自分类Dev

在PHP中调用过程时的PLSQL自定义数据类型

来自分类Dev

如何使用嵌套表类型的参数调用 Oracle 过程

来自分类Dev

从Java调用Oracle类型TABLE的存储过程

来自分类Dev

如何自定义numpy重塑过程?

来自分类Dev

在存储过程调用中使用默认参数

Related 相关文章

  1. 1

    JDBCIO调用以自定义对象类型为参数的Postgres例程(存储过程)

  2. 2

    在存储过程中使用自定义类型

  3. 3

    将Oracle存储过程结果映射到自定义Java类型(类)

  4. 4

    Plsql 使用自定义类型作为表运行存储过程

  5. 5

    如何使用JDBC调用PostgreSQL存储过程

  6. 6

    如何使用JDBC调用PostgreSQL存储过程

  7. 7

    从Java调用存储类型为Record的参数的存储过程

  8. 8

    如何在Java中使用自定义类型注释

  9. 9

    如何在PostgreSQL中将自定义类型的多维数组作为函数参数传递?

  10. 10

    使用JTDS调用存储过程时如何设置空表类型参数

  11. 11

    F#:使用自定义类型参数调用本机函数

  12. 12

    使用用户定义的参数调用存储过程

  13. 13

    使用用户定义的参数调用存储过程

  14. 14

    如何调用自定义Java数组

  15. 15

    自定义代码存储过程

  16. 16

    如何使用自定义类型malloc()?

  17. 17

    如何在Java代码中从Postgresql调用存储过程

  18. 18

    如何使 JSF 自定义组件存储自定义类型作为其值?

  19. 19

    IBM Worklight-如何使用“ OUT”参数调用存储过程?

  20. 20

    如何在python中使用参数调用存储过程?

  21. 21

    如何为自定义类的参数指定类型提示?

  22. 22

    在VB.NET中调用自定义SQL Server存储过程和URL重定向

  23. 23

    具有自定义BODY参数的Worklight Client调用过程

  24. 24

    在PHP中调用过程时的PLSQL自定义数据类型

  25. 25

    在PHP中调用过程时的PLSQL自定义数据类型

  26. 26

    如何使用嵌套表类型的参数调用 Oracle 过程

  27. 27

    从Java调用Oracle类型TABLE的存储过程

  28. 28

    如何自定义numpy重塑过程?

  29. 29

    在存储过程调用中使用默认参数

热门标签

归档