0
なしBigDecimalのフィールドを返す私は、Java(Toplinkの)からストアドプロシージャを呼び出す:PLSQLストアドプロシージャクエリ(TopLinkが)画分
PLSQLStoredProcedureCall call = new PLSQLStoredProcedureCall();
call.setProcedureName("PACK_PORTAL_VIEW.get_payment_details");
call.addNamedArgument("p_order_id", JDBCTypes.NUMERIC_TYPE);
call.addNamedOutputArgument("some_variable", JDBCTypes.NUMERIC_TYPE);
DataReadQuery drQuery = new DataReadQuery();
drQuery.setCall(call);
drQuery.addArgument("p_order_id");
Query query = ((JpaEntityManager) em.getDelegate()).createQuery(drQuery);
query.setParameter("p_order_id", orderId);
DatabaseRecord record = (DatabaseRecord) query.getSingleResult();
record.get("some_variable");
record.get( "some_variable")に格納されているいくつかの値を返します小数部分を持つDBが、Javaでそれはそれなしで(「some_variable」)
record.getを書かれているが。はgetClass()私は、データベースに格納されている端数値を取得できますかBigDecimal.class
を返します。 ?
/**
* PUBLIC: Add a named OUT argument to the stored procedure. The databaseType parameter
* classifies the parameter (JDBCType vs. OraclePLSQLType, simple vs. complex). The extra scale
* and precision parameters indicates that this parameter, when used in an Anonymous PL/SQL
* block, requires scale and precision specification
*/
public void addNamedOutputArgument(String procedureParameterName, DatabaseType databaseType,
int precision, int scale) {
DatabaseType dt = databaseType.isComplexDatabaseType() ?
((ComplexDatabaseType)databaseType).clone() : databaseType;
arguments.add(new PLSQLargument(procedureParameterName, originalIndex++, OUT, dt,
precision, scale));
}
: