我们需要使用以下类型的数据使用来自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)相关的列实际上是数组,它可以从我的前端应用程序中为一个管理员提供任意数量的员工。 我们需要在SP中的Store Procedure和process中传递这些值。但是,我无法在db2中找到任何数组类型数据类型。
我知道我可以采取以下两种方法: - 1.定界值: - 使用varchar列并在分隔符的帮助下附加所有值并在SP中分割。
2456,John,Graham|45464,Peter,Black
2。有单独的SP并批量调用。
但是,我正在寻找可以单步传递它们的方法以及更多结构化数据类型。 DB2是否具有类似数组的数据类型以支持此方法或以任何方式创建自定义数据类型。
我在前端使用Spring JDBCTemplate来调用SP(我可以灵活地更改它)和DB2作为数据库。\
P.S。 : - 打开查询不是我的选项,只需要调用SP。 这个SP将直接从java调用,所以如果必须使用自定义数据类型,只有范围是在名为
的存储过程中定义它。答案 0 :(得分:1)
由于Emp Id,Emp First Name和Emp Last Name的数据类型可能不同,因此您应该使用DB2 ROW
类型来包含它们,而不是ARRAY
。在Java中,由java.sql.Struct
表示。您还可以将ARRAY
ROW
种类型传递给存储过程。 Check the manual for details and examples.