2015-04-28 87 views
1

我想從PLSQL Proceduer獲取參數。從java獲得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' ? 謝謝。

+0

首先是什麼'了'和'代碼在這裏be'?接下來是您可以使用callable語句來調用過程並訪問結果。 –

回答

1

其實你不需要休眠但是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