java - 将多行数组从 java 传递到 DB2 存储过程

标签 java stored-procedures jdbc db2 spring-jdbc

我们需要使用 Java 应用程序中的存储过程来使用以下类型的数据更新 DB2 数据库。

ManId ManaFirstName ManLastName CubicleId Unit EmpId EmpFirstName EmpLastName
2345  Steeven        Rodrigue   12345RT HR     2456     John        Graham
                                               45464    Peter       Black

这里,与 Emp 相关的列(Emp Id 、 Emp First Name 和 Emp Last Name )实际上是数组,它可以为一个经理提供来 self 的前端应用程序的任意数量的员工。 我们需要将这些值传递到存储过程中并在 SP 中进行处理。但是,我在 db2 中找不到任何数组类型数据类型。

我知道我可以采取以下两种方法:- 1. 分隔值:- 具有 varchar 列,并借助分隔符附加所有值并在 SP 中拆分。

                     2456,John,Graham|45464,Peter,Black

2.拥有独立SP,批量调用。

但是,我正在寻找可以一次性传递它们和一些更多结构化数据类型的方法。 DB2 是否有像数组这样的数据类型来支持此功能或以任何方式创建自定义数据类型。

我在前端使用 Spring JDBCTemplate 来调用 SP(我可以灵活更改它)和 DB2 作为数据库。\

附注:- 公开查询对我来说不是选项,只需调用 SP。 该 SP 将直接从 java 调用,因此如果必须使用自定义数据类型,唯一的范围是在被调用的存储过程中定义它

最佳答案

由于 Emp Id 、Emp First Name 和 Emp Last Name 的数据类型可能不同,因此您应该使用 DB2 ROW 类型来包含它们,而不是 ARRAY。在 Java 中,由 java.sql.Struct 表示。您还可以将 ROW 类型的 ARRAY 传递给存储过程。 Check the manual for details and examples.

关于java - 将多行数组从 java 传递到 DB2 存储过程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27482256/

相关文章:

java - Hybris 项目 : difference between custom-property and attributes

java - 必须了解 header http ://docs. oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd 检查失败:安全性

JDBC、Fortify 和 Try-With-Resource

mysql - 如何使用 JDBC 中的文本字段值更新数据库?

java - tomcat 重新部署时的 JDBC 事务行为

java - JAXB 解码,同一对象 - 多个实例

java - 如果其他参数不起作用?

mysql - 允许在程序中授予权限吗?

mysql - 错误代码 : 1054. 存储过程中 'abcdef' 中的未知列 'field list'

postgresql - 如何在postgres中执行存储过程的字符串结果