hibernate—从java获取plsql过程的值

q5iwbnjs  于 2021-07-13  发布在  Java
关注(0)|答案(1)|浏览(447)

我想从plsql程序中获取参数。

PROCEDURE BALANCE(requestDate in date, uniqueId in number, field1 out varchar2, field2 out varchar2)
AS 
BEGIN
    field1 := '110';
    field2 := '100';
END BALANCE;

这是java代码:

javax.persistence.Query query = pm.getEntityManager().createNativeQuery(" declare a number(10);" +
            " b number(10);" +
            " begin BALANCE(:date,:id,a,b); end;");
    query.setParameter("date", transaction.getTransactionId().getRequestDate());
    query.setParameter("id", transaction.getTransactionId().getId());
    query.executeUpdate();

我想在java程序中使用'a'和'b',但我不知道如何得到'a'和'b'?谢谢。

6qqygrtg

6qqygrtg1#

实际上,您不需要hibernate,只需要jdbc。您没有任何实体可用于out参数。
要调用它们,只需注册ut参数,并在调用语句后将它们取回。

String getDBUSERByUserIdSql = "{call getDBUSERByUserId(?,?,?,?)}";
callableStatement = dbConnection.prepareCall(getDBUSERByUserIdSql);
callableStatement.setInt(1, 10);
callableStatement.registerOutParameter(2, java.sql.Types.VARCHAR);
callableStatement.registerOutParameter(3, java.sql.Types.VARCHAR);
callableStatement.registerOutParameter(4, java.sql.Types.DATE);

// execute getDBUSERByUserId store procedure
callableStatement.executeUpdate();

String userName = callableStatement.getString(2);
String createdBy = callableStatement.getString(3);
Date createdDate = callableStatement.getDate(4);

示例中的代码

相关问题