java - 从java获取plsql过程的值

标签 java hibernate plsql persistence

我想从 PLSQL Proceduer 获取参数。

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'? 谢谢。

最佳答案

实际上你不需要hibernate而是JDBC。您没有任何用于输出参数的实体。

要调用它们,只需注册 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);

代码来自the example

关于java - 从java获取plsql过程的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29913898/

相关文章:

java - mvn/m2e 不带 M1 M2

java - 未显示 GDPR 同意对话框

java - 解决 java/Scala play 框架应用程序中的性能问题

java - CallStaticBooleanMethodV 的返回类型与 Java 方法签名不匹配 - 从 C/C++ 调用 Java 方法

java - OneToMany 带注释的集合无法通过 Hibernate 持久化

forms - 带有 Hibernate 的 Spring MVC - 表单中的 OneToMany 映射

sql - 如何将 select 语句的结果集插入到嵌套表中?

java - UserService NullPointerException Spring/Hibernate

oracle - 尝试通过 PL/SQL 导出 Oracle 给出的日期为 0000-00-00

oracle - RAISE_APPLICATION_ERROR 的目的是什么?