调用存储过程并传递表类型参数

3

我在HANA数据库中创建了这个存储过程,它需要两个参数,一个是表类型,另一个是 varchar 类型。

CREATE PROCEDURE UPDATE_GSTR(IN p_Input_Values "GSTR11".p_Input_Values , IN p_TRANS_ID VARCHAR(100))

现在我想在Java中调用这个过程,我写了以下代码。
Connection dbConnection = null;
CallableStatement callableStatement = null;

String storedProcedure = "{call UPDATE_GSTR(?,?)}";

dbConnection = jdbc.getDataSource().getConnection();
callableStatement = dbConnection.prepareCall(storedProcedure);

callableStatement.setString(1, "");
callableStatement.setString(2, "");

// execute store procedure
callableStatement.executeUpdate();

请问如何在调用存储过程时将对象作为表实体传递给参数?


IN是一种数据类型吗?在调用方法的任何地方传递这种类型的值。 - Naman
1个回答

2
类型的输入参数不能在SAP HANA之外创建。 对于客户端应用程序,仍然可以使用临时表来使用与参数表具有相同结构的类型参数。
然后,您的JAVA应用程序将首先填充临时表,然后在第二步中调用该过程。
String storedProcedure = "{call UPDATE_GSTR("<temp_table_name>",?)}";

感谢您的评论。实现这个概念的意图是将负载从Java转移到数据库中,以提高性能,但似乎没有办法做到这一点。 - nomaan
不确定我理解你的意思。无论如何,您都必须以某种方式构建表类型参数的内容。构建用于传递数据到过程中的服务器端临时表虽然不太方便,但要做的工作并不多。 - Lars Br.

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接